Java の java.nio.file.Files.walkFileTree() は、ファイルが存在しない (最近削除されたファイル) 場合でも、訪問者の visitFile() メソッドを実行します。
FileUtils.forceDelete(certainFile);
Files.exists(certainFile.toPath()); // Returns false, as expected
MySimpleFileVisitor visitor = new MySimpleFileVisitor(); // Extends SimpleFileVisitor. All it does is override visitFile() so I can see that it visits the deleted file.
Files.walkFileTree(directory, visitor); // Calls visitor.visitFile on certainFile. Not expected!
これは可能ですか?Windows を使用しており、ファイルはネットワーク ドライブにあります。
Files.walkFileTree() は FileTreeWalker.walk() を呼び出し、FileTreeWalker.walk() は Files.newDirectoryStream() を呼び出します。私が考えることができる唯一の説明は、 Files.newDirectoryStream が削除されたファイルを含む DirectoryStream を返すということです。