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

2022-08-31 05:56:34

在 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


答案 1

你使用是因为有一天你的程序可能会在一个遥远的土地上开发的平台上运行,一个奇怪的事物和陌生人的土地,在那里马哭,牛操作所有的电梯。在这片土地上,人们传统上使用“:”字符作为文件分隔符,因此JVM尽职尽责地服从他们的意愿。File.separator


答案 2

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

但是,您可能希望在UI中使用,因为最好向人们展示在他们的操作系统中有意义的内容,而不是对Java有意义的内容。File.separator

更新:在五分钟的搜索中,我无法找到记录的“您可以随时使用斜杠”行为。现在,我确信我已经看到它被记录下来,但是在找不到官方参考的情况下(因为我的记忆力并不完美),我会坚持使用,因为你知道这会起作用。File.separator


推荐