Java プラットフォームに合わせて区切り文字を指定する File.separator

Java
スポンサーリンク

ファイル区切り文字について

特定のパスからファイルを参照する時、ファイル区切り文字を文字列で指定してませんか?
ちなみにファイル区切り文字とはファイルのパス指定において、パスとファイルを区切るときに使用する「¥」「\」「/」「:」などの文字のことです。

例えばこんな感じ。※私はOSごとの区切り文字を把握しておりません!

//Windows
String path = "AAA¥¥BBB¥¥java.txt";
//Linux
String path = "AAA/BBB/java.txt";
//Mac しらん

区切り文字ってプラットフォームによって指定方法が異なるそうなんです。

これを知らなくて、このOSなら動いたけどこっちのOSでは動かないよー ってなったりします。

それじゃあOSを判断すれば・・・

String os = System.getProperty("os.name");
if (os.indexOf("Windows") >= 0){
  // Windows
  String path = "AAA¥¥BBB¥¥java.txt";
} else if (os.indexOf("Linux") >= 0) {
  // Linux
  String path = "AAA/BBB/java.txt";
} else if(os.indexOf("Mac") >= 0){
  // MacOS
} else {
  // その他
}

処理にもよりますが、今回のケースではあまりにも冗長ですよね・・・

File.separatorを使おう

解決策の結論を言うと、「 File.separator」を使用しましょう。
プラットフォームに合わせて区切り文字を判別してくれます。

こんな感じ。はい、これだけ!

String path = "AAA" + File.separator + "BBB" + File.separator + "1.mht";

Javaはマルチプラットフォームな言語ですので、OSごとの特性を考えて実装しないとですね。

なんて言ったってご存知の通り30億のデバイスで動く言語ですので笑

タイトルとURLをコピーしました