2017-02-10 29 views
2

Я хотел бы перебрать файлы, которые находятся в сетевом UNC-пути, чтобы я мог работать над ними, возможно ли это?java nio итерация файлов в символической ссылке

Я пытаюсь сделать это ниже (см. Ниже код), и это не список файлов.

Но, с помощью проводника 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; 
    } 
}); 

Правильно ли я создал символическую ссылку?

ответ

2

Я думаю, вам нужно использовать опцию FOLLOW_LINKS.

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

Не работает, если корневой каталог символическая ссылка ... может быть, это будет работать, если я положил в другую папку, а затем в качестве вложенной в этой корневой папке будет следовать символической ссылке, но то, что мне нужно, это не так –

+0

@EmrahMehmedov Не могли бы вы проверить, существует ли ссылка? что-то вроде 'Files.isSymbolicLink (Paths.get())' и 'Files.exists (Paths.get (..))' –

+0

Для меня это работало как корневой каталог символической ссылки. – viniciussss