首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建绝对路径

创建绝对路径
EN

Stack Overflow用户
提问于 2020-07-24 15:28:22
回答 1查看 270关注 0票数 0

Java Paths类具有以下创建Path对象的有用方法:

代码语言:javascript
复制
Path path = Paths.get("a", "b", "c", "d", "e.txt");

但是,使用这种方法,结果路径相对于调用目录。获得绝对路径的最佳platform-independent方法是什么(透明地结合了\和Unix /约定)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 15:47:58

如果您有一个需要成为绝对路径的Path对象,则只需在其上调用toAbsolutePath();请注意,path对象知道平台分隔符是什么;它已经与平台无关,无需手动转换任何斜杠。

如果您的意思是:我有一串字符串,我想在unix上获得表示/a/b/c/d/e.txt的路径,而在windows上获取表示C:\a\b\c\d\e.txt的路径,这是一个问题。因为C:实际上不是你可以假设的东西。

然后你的问题就无法回答了:如果你想完全独立于平台,根本就没有“根目录”这样的概念。在windows上,人们只能说‘根目录’,连接到驱动器号上的文件系统也一样多,这也是一个棘手的抽象,因为windows确实适用于\\drive-identifier\path模型。

你可能想要调查的事情:

代码语言:javascript
复制
for (Path p : FileSystems.getDefault().getRootDirectories()) {
    System.out.println("Found a root: " + p);
}

例如,您可以使用“只要离开第一个根,不管它是什么”:

代码语言:javascript
复制
Path root = FileSystems.getDefault().getRootDirectories().iterator().next();
Path p = root.resolve(Paths.get("a", "b", "c", "d", "e.txt"));
System.out.println(p);

这是否是您想要的根(大概是C:) --这将取决于许多因素。

最好的做法是忘记有单独的字符串。如果您接受代表绝对路径的用户输入,则采用一个单一字符串。windows上的用户一定要键入类似于:C:\Users\Sandeep\hello.txt之类的内容,而Paths.get()在输入时一点问题都没有。mac上的用户可能输入/Users/Sandeep/hello.txt,如果您将它提供给Path,它也能正常工作,从那里开始的操作已经完全独立于平台了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63076700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档