Java中的平台无关路径

时间:2010-08-23 14:59:25

标签: java file cross-platform

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

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

8 个答案:

答案 0 :(得分:85)

只需使用/即可。我已经使用它22年了。从来没有问题。

答案 1 :(得分:48)

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

  

static String pathSeparator
     系统相关的路径分隔符,为方便起见,表示为字符串   static char pathSeparatorChar
     依赖于系统的路径分隔符   static String separator
      系统相关的默认名称分隔符,为方便起见,表示为字符串。   static char separatorChar
      系统相关的默认名称分隔符。

答案 2 :(得分:12)

您可以在Java中使用任何路径分隔符,它可以在Unix和Windows上使用。 如果您仍想使用系统路径分隔符,则File.separator属性将根据当前系统为您提供正确的属性。

对于root,你可以使用listRoots()为你提供一个root数组,在Unix系统上只有一个元素,在Windows上只有你有多个驱动器。

答案 3 :(得分:7)

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

答案 4 :(得分:5)

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

答案 5 :(得分:3)

java 7也支持在这里使用Paths

  

通过调用默认FileSystem的getPath方法获取Path。

然后您可以通过以下方式从中获取文件:

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

答案 6 :(得分:1)

就我个人而言,我喜欢使用Eclipse中的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=source

答案 7 :(得分:0)

只有10年为时已晚。 “仅使用'/'没关系”只有一半正确(好的,四分之三)。您必须考虑数据的来源。

如果您使用Java获取路径,它将使用'/' 如果您使用Java创建路径,它将理解为'/'

但是输入到程序中的路径呢?

假设我有一系列创建配置文件(属性)的脚本。假设配置变量之一是INTERESTING_FILE,我们将其生成为包含路径的文件名。现在假设我要从中提取实际的文件名,所以我说

String[] filename = INTERESTING_FILE.split("/");

这将在Windows系统上无法正常运行

String[] filename = INTERESTING_FILE.split(pathSeparator);

将起作用(通过Paths类对其进行清洗)。

我想关键是,我不认为'/'在每种情况下都会起作用。