J'ai essayé à la fois File.listFiles() et Files.fileTreeTraverser(). De gava breadthFirstTraversal (dir).Java File I/O semble cesser de fonctionner après un certain temps programme - pas d'erreurs
if (dir.exists()) {
for (File f : Files.fileTreeTraverser().breadthFirstTraversal(dir)) {
if (f.isFile()) {
if (f.getName().endsWith(EXT)) {
matches.add(f);
} else {
if (!f.getName().endsWith(".ini")) {
log.db("No match: " + f.getName());
}
}
}
}
} else {
log.error("No directory found.");
dir.mkdirs();
}
log.db(matches);
Dans ces deux cas, après que le programme fonctionne pendant un certain temps (l'exécution de ce code particulier 2x par seconde), correspond à vide tourne. Pour Guava, il n'y a pas d'erreur du tout. Pour File.listFiles() de Java, dir.listFiles() devient null.
Ce code s'exécute sous Windows et ne fait rien d'autre dans le répertoire que l'écriture occasionnelle d'un fichier. Il n'y a qu'un seul fichier dans le répertoire.
Existe-t-il une règle dans Windows qui empêche le fonctionnement des fichiers d'E/S après un certain temps?
Juste une supposition dans le bleu: Avez-vous ouvert ce fichier plusieurs fois sans le fermer correctement après cela? – Brotcrunsher
Où est ce que vous appelez File.listFiles()? Et non, il n'y a pas de telle règle. – Oleg
@Brotcrunsher, je ne l'ouvre pas, seulement obtenir les noms de fichiers et supprimer et créer des fichiers. Aucun flux d'entrée ou de sortie n'est ouvert. – misaka