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

広告

ファイル区切り文字


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

例えばこんな感じ。※私は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」を使用しましょう!
プラットフォームに合わせて区切り文字を判別してくれます。

こんな感じ。はい、これだけ!
String path = "AAA" + File.separator + "BBB" + File.separator + "1.mht";

Javaはマルチプラットフォームな言語ですので、OSごとの特性を考えて実装しないとですね。
なんて言ったってご存知の通り30億のデバイスで動く言語ですので笑
広告

Profile