NIOJava7NIO2文件。走不走目录异常
我有一个符号指向他的父目录是的,很奇怪,但我试图理解FileSystemLoopException我已经做到了。但另一个问题出现了
我有以下代码
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public final class FileLoopSystemException{
private final Path target = Paths.get("C:\\Users\\Documents\\SymbolicLinks\\Folder\\SubDirectorio\\SymbolicApuntandoADirectorioLink.txt");
public static void main(String[] args)throws Exception{
final FileLoopSystemException clazz = new FileLoopSystemException();
clazz.walk();
}
private void walk()throws Exception{
System.out.println("Exist: "+Files.exists(target));//false
System.out.println("Directory: "+Files.isDirectory(target));//true
System.out.println("Symbolic: "+Files.isSymbolicLink(target));//true
System.out.println("RegularFile: "+Files.isRegularFile(target));//false
final long count = Files.walk(target,java.nio.file.FileVisitOption.FOLLOW_LINKS)
.peek(a->System.out.println(Files.isSymbolicLink(a)+" "+a))
.count();
System.out.println("count = " + count);
}
}
但是扔
Exception in thread "main" java.nio.file.NotDirectoryException: C:\Users\Documents\SymbolicLinks\Folder\SubDirectorio\SymbolicApuntandoADirectorioLink.txt
我正在使用FollowLink选项,但我不知道目标是follow,这是一个目录,为什么是文件。walk说如果我没有通过FOLLOW\u链接选项,那么它不是一个目录。链接选项被打印到文件本身,这是正常的,因为它不是FOLLOW
在简历为什么文件。步行不能横穿我的目标,这是一个目录,是遵循
API说
Checked exception thrown when a file system operation, intended for a directory, fails because the file is not a directory.
但是它是一个目录,并且是follow,因为它被视为一个常规文件,它会打印文件名,而不是链接follow,并且设置了目录,但是Java不能识别为常规目录
我的文件系统是这样的
C:\Users\Documents\SymbolicLinks\Folder\SubDirectorio
....SymbolicApuntandoADirectorioLink.txt -->SymbolicLink pointing to parent directory SubDirectorio
# 1 楼答案
很可能
SymbolicApuntandoADirectorioLink.txt
是父目录的file symbolic link
,而不是directory symbolic link
为
file.lnk
运行代码失败为
dir.link
运行代码失败