在了解nio2 api的行为时,我考虑了以下几点:

Path unix = Paths.get("/");
Path windows = Paths.get("c:\\");
System.out.println(unix.getNameCount());
System.out.println(windows.getNameCount());

…给出输出
0
1

为什么?我希望得到相同的结果,实际上应该是0,因为没有名称,只有根。当我添加文件夹时
Path unix = Paths.get("/etc");
Path windows = Paths.get("c:\\etc");
System.out.println(unix.getNameCount());
System.out.println(windows.getNameCount());

…然后我得到
1
1

对windows部分来说,这不是很混乱吗?
编辑:我自己也在Linux机器上。

最佳答案

好吧,现在我找到了正确的解释:
路径实例反映底层平台。在solaris操作系统中,路径使用solaris语法(/home/joe/foo),在microsoft windows中,路径使用windows语法(c:\ home\joe\foo)。路径不是独立于系统的。
从这里开始:http://docs.oracle.com/javase/tutorial/essential/io/pathClass.html
这意味着在我的Linux机器上,路径"c:\\\\"将是工作目录中相对文件夹的名称。

关于java - java.nio.file.path:行为与名称计数不一致?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25304103/

10-11 22:28
查看更多