java nio 以符号形式迭代文件 link
java nio iterate files in symbolic link
我想遍历网络 UNC 路径中的文件,以便我可以对它们进行操作,这可能吗?
我正在尝试以下方式(请参阅下面的代码)但它没有列出文件。
但是,使用 windows 资源管理器我可以访问该文件夹,我可以查看、修改甚至删除它们。
// created with this command: mklink /D C:\Users\user\Desktop\repo \serverIp\public\repo
File repo = new File("C:\Users\user\Desktop\repo"); // symlink
final Path dir = FileSystems.getDefault().getPath(repo.getCanonicalPath());
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path newDir, BasicFileAttributes attrs) throws IOException {
System.out.println(newDir.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
});
我是否正确创建了符号 link?
我认为你需要使用 FOLLOW_LINKS 选项。
import static java.nio.file.FileVisitResult.*;
Files.walkFileTree(dir, EnumSet.of(FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() { ... ))
我想遍历网络 UNC 路径中的文件,以便我可以对它们进行操作,这可能吗?
我正在尝试以下方式(请参阅下面的代码)但它没有列出文件。
但是,使用 windows 资源管理器我可以访问该文件夹,我可以查看、修改甚至删除它们。
// created with this command: mklink /D C:\Users\user\Desktop\repo \serverIp\public\repo
File repo = new File("C:\Users\user\Desktop\repo"); // symlink
final Path dir = FileSystems.getDefault().getPath(repo.getCanonicalPath());
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path newDir, BasicFileAttributes attrs) throws IOException {
System.out.println(newDir.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
});
我是否正确创建了符号 link?
我认为你需要使用 FOLLOW_LINKS 选项。
import static java.nio.file.FileVisitResult.*;
Files.walkFileTree(dir, EnumSet.of(FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() { ... ))