java visitor_java11教程--接口FileVisitor用法
文件的訪問者。
該接口的實現被提供給Files.walkFileTree方法以訪問文件樹中的每個文件。
用法示例:假設我們要刪除文件樹。 在這種情況下,刪除目錄中的條目后,應刪除每個目錄。
Path start = ...
Files.walkFileTree(start, new SimpleFileVisitor() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException
{
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException e)
throws IOException
{
if (e == null) {
Files.delete(dir);
return FileVisitResult.CONTINUE;
} else {
// directory iteration failed
throw e;
}
}
});
此外,假設我們要將文件樹復制到目標位置。 在這種情況下,應遵循符號鏈接,并且應在復制目錄中的條目之前創建目標目錄。
final Path source = ...
final Path target = ...
Files.walkFileTree(source, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE,
new SimpleFileVisitor() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs)
throws IOException
{
Path targetdir = target.resolve(source.relativize(dir));
try {
Files.copy(dir, targetdir);
} catch (FileAlreadyExistsException e) {
if (!Files.isDirectory(targetdir))
throw e;
}
return CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException
{
Files.copy(file, target.resolve(source.relativize(file)));
return CONTINUE;
}
});
在目錄中的條目及其所有后代訪問后,為目錄調用。
在訪問目錄中的條目之前為目錄調用。
為目錄中的文件調用。
為無法訪問的文件調用。
在訪問目錄中的條目之前為目錄調用。
如果此方法返回CONTINUE ,則訪問該目錄中的條目。 如果此方法返回SKIP_SUBTREE或SKIP_SIBLINGS,則不會訪問目錄中的條目(以及任何后代)。
為目錄中的文件調用。
為無法訪問的文件調用。
如果無法讀取文件的屬性,文件是無法打開的目錄以及其他原因,則調用此方法。
在目錄中的條目及其所有后代訪問后,為目錄調用。
當目錄的迭代過早完成時(通過visitFile方法返回SKIP_SIBLINGS ,或者在迭代目錄時發生I / O錯誤),也會調用此方法。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java visitor_java11教程--接口FileVisitor用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python创建虚拟环境venv_Pyt
- 下一篇: chrome github上不去 mac