有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java文件路径最佳实践

如果操作系统是Windows,下面给出的哪一种是Java编码的最佳方法

1)美元 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) 个答案

  1. # 1 楼答案

    Jon Skeet是正确的,但我想说的是,微软只在命令解释器中强制使用\。API中的每个地方都可以使用/

    因此,您可以在任何地方使用String f = "some/path/file.ext";,但如果启动的程序是cmd.exe,则可以在ProcessBuilder中使用

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

  2. # 2 楼答案

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

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

    /path或C:/path

    它也是最干净、可读性最强的替代方案

  3. # 3 楼答案

    编辑:鉴于这些评论,我应该澄清一下。这当然取决于上下文。你想干什么?如果您试图以“本机”操作系统格式创建文件路径,我将使用选项5,使用^{}

    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获得一个规范表示,如果需要,它将使用反斜杠而不是正斜杠