我有两个关于文件的相关问题,以及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";
干杯!
答案 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)
如上所述,components
是Iterable
或文件路径组件的数组。
e.g。 String path = StringUtils.join(new String[] {"foo", "bar"}, File.separator);
答案 2 :(得分:0)
关于你的第一个问题,Jesper是正确的,如果你使用java 7,java.nio.Pages.get()是最好的。
关于问题的第二部分,请考虑使用:
file.getParentFile().getName();
导航到给定文件(或目录)的父级。