タイトルの出オチ記事。
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
Wikipedia:Java version history en.wikipedia.org