问题描述
我的代码:
Path uploadPath = Paths.get("D:\\0.hzg\\");
System.out.println(uploadPath);
输出:
D:\0.hzg
如何在这里了解Path
的toString()
方法的设计?
我认为它应该输出D:\\0.hzg\\
因为0.hzg
是路径而不是文件。
更新:
System.out.println(Paths.get("-","A", "B"));
System.out.println(Paths.get("/","A", "B"));
System.out.println(Paths.get("\\","A", "B"));
输出:
-\A\B
\\A\B\
\\A\B\
1楼
[Paths] gets方法仅通过注意system-file-separator来创建路径,这将有助于跨平台执行程序,例如
System.out.println(Paths.get(File.separator,"A", "B"));
将返回
在Windows上:\\\\ A \\ B \\
在Unix上:/ A / B /
File.separator的详细信息是
取决于系统的默认名称分隔符。 初始化此字段以包含systemproperty file.separator值的第一个字符。 在UNIX系统上,此字段的值为'/'; 在Microsoft Windows系统上,它是'\\'。
具体问的问题
我相信是因为绝对之路
例如在Windows JDK 1.7上
System.out.println(Paths.get("C:","A", "B")); **Output** : C:\A\B
System.out.println(Paths.get("C:","A", "0.hzg")); **Output** : C:\A\0.hzg
System.out.println(Paths.get(File.separator,"A", "B")); **Output** : \\A\B\
System.out.println(Paths.get(File.separator,"A", "0.hzg")); **Output** : \\A\0.hzg\
希望能有所帮助
2楼
Path
不执行任何I/O
检查这是目录还是常规文件。
它是一个实用程序类,用于处理文件系统路径的平台依赖的字符串表示形式(您绝对不希望通过/
分割字符串或自己查找驱动器号)。
引用javadoc
可用于在文件系统中定位文件的对象。 它通常代表系统相关的文件路径。
另外,不考虑尾随分隔符(请参见例如endsWith
方法说明)
请注意,未考虑尾部分隔符,因此在路径“ foo / bar”上使用字符串“ bar /”调用此方法将返回true。