java nio迭代符号链接中的文件

时间:2017-02-10 11:53:12

标签: java nio symlink unc

我想迭代网络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;
    }
});

我是否正确创建了符号链接?

1 个答案:

答案 0 :(得分:2)

我认为您需要使用FOLLOW_LINKS选项。

import static java.nio.file.FileVisitResult.*;
Files.walkFileTree(dir, EnumSet.of(FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() { ... ))