即使Path.get("")只是一个空字符串,Path.getNameCount也会返回1

时间:2017-07-31 05:31:11

标签: java-8

每当Path.get("")。getNameCount()返回1时,为什么控制台输出与Path.getNameCount有点不一致是没有意义的,其中我希望它为0,当我使用Path.get(" C:\")。getNameCount()返回0 - >这个按预期工作。我读了javadoc,没有太多关于发生了什么的直观信息所以我不得不问这个需要在java se中修复的东西?或者我错过了什么?

来自java doc

  

int getNameCount()   返回路径中名称元素的数量。   返回:   路径中元素的数量,如果此路径仅表示根组件,则为0

crawledPages.putIfAbsent(urlToBeCrawled)

控制台输出:

//omitted codes
print(Paths.get(""));
print(Paths.get("C:"));
print(Paths.get("C:\\"));
//omitted codes
public static void print(Path path) {
    System.out.println("~~~~~~~ " + path + " ~~~~~~~");
    System.out.println("getRoot : " + path.getRoot());
    System.out.println("getParent : " + path.getParent());
    System.out.println("getFileName : " + path.getFileName());
    int nameCount = path.getNameCount();
    System.out.println("getNameCount : " + nameCount);
    if (nameCount > 1) {
        IntStream.range(0,nameCount).forEach(x->{
            System.out.println("getName(" + x + ") : " + path.getName(x) + "\t");
        });
    }
}
//omitted codes

1 个答案:

答案 0 :(得分:1)

感谢@Thilo,我意识到Paths.get(“”)等同于默认目录或当前目录,并且按照规范我不会从getNameCount获得0而是1,所以我运行了一些测试

System.out.println("isAbsolute : " + path.isAbsolute());
System.out.println("toAbsolutePath : " + path.toAbsolutePath());

控制台输出:

isAbsolute : false
toAbsolutePath : C:\Users\user\Documents\java\NIO

所以那里,现在是有道理的。毕竟从来就不是一条空路径,但是当然还有绝对路径返回新路径对象并且不等于原始路径(“”)