1. ホーム

[解決済み】パスのFile.separatorとスラッシュの違いについて

2022-04-09 10:57:38

質問

を使用するのとでは、どのような違いがあるのでしょうか。 File.separator と通常の / をJavaのPath-Stringで表現できますか?

とは対照的に、ダブルバックスラッシュ \\ 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では、Javaにとって意味のあるものよりも、彼らのOSで意味のあるものを示すのがベストだからです。

更新情報 : 5 分間検索しても、"you can always use a slash" の動作が文書化されているのを見つけることができませんでした。しかし、公式のリファレンスが見つからない場合(私の記憶が完璧でないため)、私は、以下のように使用します。 File.separator なぜなら 知っている というのが効果的です。