一尘不染

File.separator和路径中的斜杠之间的区别

java

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


阅读 899

收藏
2020-03-03

共1个答案

一尘不染

使用用于处理文件的Java库,你可以/在所有平台上安全地使用(斜杠,而不是反斜杠)。库代码负责在内部将事物转换为特定于平台的路径。

File.separator但是,你可能要在UI中使用,因为最好向人们展示在他们的OS中有意义的东西,而不是对Java有意义的东西。

更新:经过五分钟的搜索,我一直无法找到记录的“你可以始终使用斜线”行为。现在,我确定我已经看到了它的文档,但是由于找不到正式的参考文献(因为我的记忆力不够强),我坚持使用,File.separator因为你知道这是可行的。

2020-03-03