java - 如何理解 java Path.toString() 方法
问题描述
我的代码:
Path uploadPath = Paths.get("D:\\0.hzg\\");
System.out.println(uploadPath);
输出:
D:\0.hzg
如何理解这里的toString()
方法的设计Path
?
我认为它应该输出D:\0.hzg\
,因为0.hzg
它是路径而不是文件。
更新:</p>
System.out.println(Paths.get("-","A", "B"));
System.out.println(Paths.get("/","A", "B"));
System.out.println(Paths.get("\\","A", "B"));
输出:</p>
-\A\B
\\A\B\
\\A\B\
解决方案
[路径] 获取方法仅通过注意系统文件分隔符来创建路径,这将有助于跨平台执行程序,例如
System.out.println(Paths.get(File.separator,"A", "B"));
将返回
在 Windows 上:\\A\B\
在 Unix 上:/A/B/
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\
希望有帮助
推荐阅读
- kubernetes - GCE 健康检查不适用于入口 nginx 控制器
- nuget - 如何在 Artifactory rev 7.7.8 中将 ProGet Feed 作为远程 Feed 连接
- python - 为什么 request.GET.get('tag', '') 在 django GET 请求中返回 C 而不是 C++?
- java - java泛型中PECS的不同类型见证
- amazon-web-services - 将现有基础设施从 terraform infra 移动到 terragrunt
- node.js - Firebase 云功能错误:“已超过截止日期”和“错误代码 16”
- javascript - 无法读取未定义的属性“添加”
- ionic-framework - 从 Play 商店获取应用程序版本以更新设备中的应用程序。离子+电容
- node.js - axios get函数发送空请求
- swagger - OpenAPI (Swagger) 无法与数组类型一起正常工作