きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

【Java】WinでもFile.separatorを使わずにスラッシュでディレクトリを表現できる

タイトルの出オチ記事。

Windows環境でディレクトリを表現するときは、次の表現はすべて同じディレクトリを指します。

String path1 = "tmp\\dummy";
String path2 = "tmp" + File.separator + "dummy";
String path3 = "tmp/dummy";

Linux等の環境では、ディレクトリの表現はスラッシュです。

// String path1 = "tmp\\dummy"; // バックスラッシュはNG
String path2 = "tmp" + File.separator + "dummy";
String path3 = "tmp/dummy";

Windowsディレクトリ表現として正しいのはバックスラッシュですが、コンパイル時に吸収してくれるようです。だから、スラッシュを使っていきましょう。または、Pathsクラスを使いましょう。

// 推奨
String path1 = "tmp/dummy";
// Pathsクラスの可変長でも表現できる
Path path2 = Paths.get("tmp", "dummy");

終わりに

最初この記事を書こうと思ったのは、「File.separatorって文言は分かりやすいけど、無駄に文字列長くなって見づらいから何とかしよう。」というモチベーションでした。

しかし、ただのスラッシュで吸収できるんですね。

stackoverflowで同様のコラムを見てみると、Java 7からの機能なので2014年の新人のころにはすでに入っていたのですが…。先輩からの指摘でFile.separatorを使うようにしていたので、スラッシュを試すという意識がありませんでした。

こういう「実は…」という便利機能に気付いて、もっと楽してコーディングできるようになりたいです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考

stackoverflow: Difference between File.separator and slash in paths stackoverflow.com

WikipediaJava version history en.wikipedia.org

f:id:nainaistar:20201013111905p:plain