簡體   English   中英

Java文件路徑最佳實踐

[英]Java File Path Best Practice

如果操作系統是Windows,下面給出的哪一個是Java編寫的最佳方法?

1)

 String f = "some\\path\\file.ext"; 
2)
 String f = new StringBuilder("some").append(File.separator).append("path").append(File.separator).append("file.ext").toString(); 
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(); 

編輯:鑒於評論,我應該澄清。 這絕對取決於背景。 你想做什么? 如果您嘗試以“本機”操作系統格式創建文件路徑,我將使用選項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來獲取規范表示,如果您願意,可以使用反斜杠而不是正斜杠。

Jon Skeet是對的,但我想說微軟只在命令解釋器中強制使用\\ API中的每個位置都可以使用/

所以你可以使用String f = "some/path/file.ext"; 如果啟動的程序是cmd.exe則在ProcessBuilder無處不在。

要轉換路徑,我使用String.replaceAll( "\\\\\\\\", "/" );

路徑通常存儲在屬性文件中,對於我使用過的大多數應用程序,我們總是使用備選方案2。

其中一個原因是它在windows和linux之間看起來很相似。

/ path或C:/ path

它也是最干凈,最易讀的替代品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM