0

我有 2 个关于文件和 Java 中的 File 类的相关问题。

我收集了构建路径的最佳实践方法 - 并让它与操作系统无关 - 是这样的:

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

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

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

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

但不管上述问题的答案如何,我的第二个问题是,“在指定路径时,是否有一种内置的方式来提升级别?”

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

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

或者有没有这样的东西:

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

大家干杯!

4

3 回答 3

2

I gather the best practice way to build a path - and have it OS agnostic - is like this:

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

Or like this (see the API documentation on the constructors of java.io.File):

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

Note that this takes only two parameters - the name of the parent directory and the filename (not an arbitrary list of subdirectories).

You're looking for java.nio.file.Paths.get():

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

Note that gives you a Path rather than a File, if you really need a File then call toFile() on the Path.

Note: This is all new stuff in Java 7.

于 2013-05-14T12:34:17.027 回答
0

在您的第一个问题上,Jesper 是正确的,如果您使用的是 java 7,那么 java.nio.Pages.get() 是最好的。

在问题的第二部分,考虑使用:

file.getParentFile().getName(); 

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

于 2013-05-14T12:49:49.140 回答
0

我不知道 Java 6,但您可以使用 Apache 的 StringUtils 来实现相同的效果:

StringUtils.join(components, File.separator)

如上所述,文件路径组件components的一个Iterable或数组在哪里。

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

于 2013-05-14T12:38:23.603 回答