Java中与平台无关的path

我知道文件的相对path,并希望能够在Linux和Windows上将其作为File对象处理。

在Java中指定与平台无关的path的最佳方法是什么?

File类包含以下可用于平台特定文件path的公共成员:

static String pathSeparator
为了方便起见,系统相关的path分隔符字符表示为一个string。
static char pathSeparatorChar
系统相关的path分隔符。
static String separator
为方便起见,系统相关的默认名称分隔符(以string表示)。 static char separatorChar
系统相关的默认名称分隔符字符。

只需使用/ 。 我已经使用了20年了。 从来没有问题。

您可以在Java中使用任何path分隔符,它可以在Unix和Windows上运行。 如果你仍然想使用系统path分隔符,那么File.separator属性会根据当前的系统给你正确的。

对于root用户,可以使用listRoots() ,它给你一个根数组,在Unix系统上只有一个元素,而在Windows上有多个驱动器。

您可以使用静态字段File.separator来检索文件path的平台特定分隔符

Java对于File对象中的path非常聪明。 我只是使用“../foo/bar”这样的东西,它在这两个平台加上MacOSX。

java 7也支持Paths的使用,这里The Path is obtained by invoking the getPath method of the default FileSystem. 然后你可以通过调用它来获得一个文件:

  File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile(); 

就我个人而言,我喜欢使用Eclipse中的Path类来处理一般的path,因为它是相当孤立的,所以您可以使用单独的几个修改。

http://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5/org.eclipse.equinox/common/3.5.0/org/eclipse/core/runtime/Path.java/?v =源