Java文件路径最佳实践

时间:2013-05-19 07:12:36

标签: java

如果操作系统是Windows,下面给出的哪一个是用Java编写的最佳方法?

1)

 String f = "some\\path\\file.ext"; 
2)
 String f = "some/path/file.ext"; 
3)
  String f = "some"+File.separator+"path"+File.separator+"file.ext"; 
4)
 String f = new StringBuilder("some").append(File.separator).append("path").append(File.separator).append("file.ext").toString(); 

3 个答案:

答案 0 :(得分:8)

编辑:鉴于评论,我应该澄清。这绝对取决于背景。你想做什么?如果您尝试以“本机”操作系统格式创建文件路径,我将使用选项5,使用File

File f = new File("some");
f = new File(f, "path");
f = new File(f, "file.ext");

或者更好,将此逻辑放入方法中:

public static File newFile(String root, String... parts) {
    // TODO: Check that nothing's null (root, parts, each element of parts)
    File ret = new File(root);
    for (String part : parts) {
        ret = new File(ret, part);
    }
    return ret;
}

然后你可以用:

来调用它
File f = SomeUtilityClass.newFile("some", "path", "file.ext");

(这可能存在于最近的JRE中,但如果是这样,我不知道在哪里。)

如果你只需要一些适用于FileInputStream等的东西,那么我可能只是硬编码正斜杠,原因有两个:

  • 它们比反斜杠更容易阅读
  • 他们也将在其他操作系统上工作

无论哪种方式,我可能仍然会创建一个File,因为它为值赋予了更明确的含义。 Java中的大多数IO API在适当的地方接受File - 并且它使围绕它的所有代码显而易见的是 文件路径。所以你可以使用:

File file = new FIle("some/path/file.ext");

......那仍然适用于Windows。然后,您可以使用File.getCanonicalFile来获取规范表示,如果您愿意,可以使用反斜杠而不是正斜杠。

答案 1 :(得分:3)

Jon Skeet是对的,但我想说微软仅在命令解释器中强制使用\。 API中的每个位置都可以使用/

因此,如果已启动的计划为String f = "some/path/file.ext";,您可以在ProcessBuilder的任何地方使用cmd.exe

要转换路径,我使用String.replaceAll( "\\\\", "/" );

答案 2 :(得分:1)

路径通常存储在属性文件中,对于我使用过的大多数应用程序,我们一直使用备选方案2。

其中一个原因是它在windows和linux之间看起来很相似。

/ path或C:/ path

它也是最干净,最易读的替代品。