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();
# 1 楼答案
Jon Skeet是正确的,但我想说的是,微软只在命令解释器中强制使用
\
。API中的每个地方都可以使用/
因此,您可以在任何地方使用
String f = "some/path/file.ext";
,但如果启动的程序是cmd.exe
,则可以在ProcessBuilder
中使用要转换路径,我使用
String.replaceAll( "\\\\", "/" );
# 2 楼答案
路径通常存储在属性文件中,对于我使用过的大多数应用程序,我们总是使用备选方案2
其中一个原因是windows和linux之间看起来很相似
/path或C:/path
它也是最干净、可读性最强的替代方案
# 3 楼答案
编辑:鉴于这些评论,我应该澄清一下。这当然取决于上下文。你想干什么?如果您试图以“本机”操作系统格式创建文件路径,我将使用选项5,使用^{} :
或者更好,将此逻辑放入一个方法中:
然后,您可以使用以下命令调用它:
(这可能存在于最近的JRE中,但如果存在,我不知道在哪里。)
如果您只需要对
FileInputStream
等有用的东西,那么我可能只需要硬编码正向斜杠,原因有两个:无论如何,我可能仍然会创建一个
File
,因为它为值提供了更清晰的含义。Java中的大多数IO API在适当的地方都接受一个File
,这使它周围的所有代码都清楚地看到,这个是一个文件路径。因此,您可以使用:。。。这在Windows上仍然有效。然后,您可以使用
File.getCanonicalFile
获得一个规范表示,如果需要,它将使用反斜杠而不是正斜杠