Java os路径操作,连接和提升级别

时间:2013-05-14 12:25:05

标签: java

我有两个关于文件的相关问题,以及Java中的File类。

我收集了构建路径的最佳实践方法 - 并且让操作系统不可知 - 就像这样:

File file = new File("dir" + File.separator + "filename.ext");

我的第一个问题是,“Java中是否有Java等效的python os.path.join函数?” 即是否有一个我可以做这样的事情的功能:

String path = some_func("arbitrary", "number", "of", "subdirs", "filename.ext");

我怀疑如果存在这样的事情,我可能需要将一个字符串数组传递给函数,而不是任意数量的args,但上面的内容是理想的。

但无论上述问题的答案如何,我的第二个问题是,“在指定路径时是否有内置的方法来提升等级?”

即。这是正确的方法,做这样的事情:

String rel_path = ".." + File.separator + "filename.ext";

或者是这样的:

String rel_path = File.level_up + File.separator + "filename.ext";

干杯!

3 个答案:

答案 0 :(得分:2)

  

我收集了构建路径的最佳实践方法 - 并且让操作系统不可知 - 就像这样:

File file = new File("dir" + File.separator + "filename.ext");

或者像这样(请参阅java.io.File的构造函数的API文档):

File file = new File("dir", "filename.ext");

请注意,这只需要两个参数 - 父目录的名称和文件名(不是任意子目录列表)。

您正在寻找java.nio.file.Paths.get()

Path path = Paths.get("arbitrary", "number", "of", "subdirs", "filename.ext");

请注意,如果您确实需要Path,则为File而不是File,然后在toFile()上致电Path

注意:这是Java 7中的所有新内容。

答案 1 :(得分:0)

我不知道Java 6,但你可以使用Apache的StringUtils来达到同样的效果:

StringUtils.join(components, File.separator)

如上所述,componentsIterable或文件路径组件的数组。

e.g。 String path = StringUtils.join(new String[] {"foo", "bar"}, File.separator);

答案 2 :(得分:0)

关于你的第一个问题,Jesper是正确的,如果你使用java 7,java.nio.Pages.get()是最好的。

关于问题的第二部分,请考虑使用:

file.getParentFile().getName(); 

导航到给定文件(或目录)的父级。