Joe23 Joe23 - 8 days ago 5
Java Question

File.separator vs Slash in Paths

What is the difference between using

File.separator
and a normal
/
in a Java Path-String?

In contrast to double backslash
\\
platform independence seems not to be the reason, since both versions work under Windows and Unix (please correct me if I am wrong here).

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));
}
}


To rephrase the question, if
/
works on Unix and Windows, why should one ever use want to use
File.separator
.

Thank you.

Answer

With the Java libraries for dealing with files, you can safely use / (slash, not backslash) on all platforms. The library code handles translating things into platform-specific paths internally.

You might want to use File.separator in UI, however, because it's best to show people what will make sense in their OS, rather than what makes sense to Java.

Update: I have not been able, in five minutes of searching, to find the "you can always use a slash" behavior documented. Now, I'm sure I've seen it documented, but in the absense of finding an official reference (because my memory isn't perfect), I'd stick with using File.separator because you know that will work.

Comments