[英]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.