我已经尝试过File.listFiles()和Guava的Files.fileTreeTraverser()。breadthFirstTraversal(dir)。
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);
在这两种情况下,程序运行一段时间后(每秒运行此特定代码2x),匹配变为空。对于番石榴来说,根本没有错误。对于Java的File.listFiles(),dir.listFiles()变为null。
此代码在Windows上运行,除偶尔编写文件外,不会对目录执行任何其他操作。目录中只有一个文件。
Windows中是否存在导致文件i / o在一段时间后停止工作的规则?
答案 0 :(得分:-1)
问题是我使用JNA(错误)的其他一些代码未能正确释放文件句柄。所以最终JVM用尽了句柄而无法再列出文件。