在Java Path-String中使用File.separator和普通法/有什么区别?
Java Path-String
File.separator
/
与双反斜杠相反,\\平台独立性似乎不是原因,因为两个版本都可以在Windows和Unix下运行。
\\
public class SlashTest { @Test public void slash() throws Exception { File file = new File("src/trials/SlashTest.java"); assertThat(file.exists(), is(true)); } @Test public void separator() throws Exception { File file = new File("src" + File.separator + "trials" + File.separator + "SlashTest.java"); assertThat(file.exists(), is(true)); } }
换个问题,如果/可以在Unix和Windows上运行,为什么要使用File.separator?
使用用于处理文件的Java库,你可以/在所有平台上安全地使用(斜杠,而不是反斜杠)。库代码负责在内部将事物转换为特定于平台的路径。
File.separator但是,你可能要在UI中使用,因为最好向人们展示在他们的OS中有意义的东西,而不是对Java有意义的东西。
更新:经过五分钟的搜索,我一直无法找到记录的“你可以始终使用斜线”行为。现在,我确定我已经看到了它的文档,但是由于找不到正式的参考文献(因为我的记忆力不够强),我坚持使用,File.separator因为你知道这是可行的。