プラットフォームに依存した「ファイル区切り」をプラットフォームに依存せずに取得する3つの方法identicalがあるようです。
どれをいつ使用するかをどのように決定しますか?
それらの間に何か違いはありますか?
System.getProperties()
は、System.setProperty(String key, String value)
の呼び出し、またはコマンドラインパラメーター-Dfile.separator=/
でオーバーライドできます。
File.separator
は、デフォルトのファイルシステムの区切り文字を取得します。
FileSystems.getDefault()
は、デフォルトのファイルシステムを取得します。
FileSystem.getSeparator()
は、ファイルシステムの区切り文字を取得します。インスタンスメソッドとして、これを使用して、1つのJVM内の複数のファイルシステムでコードを操作する必要がある場合に、デフォルト以外のコードに異なるファイルシステムを渡すことができます。
コードがファイルシステムの境界を越えない場合、つまり、1つのファイルシステムで作業している場合は、Java.io.File.separator
を使用します。
これにより、説明したように、FSのデフォルトのセパレータが取得されます。 Bringer128が説明したように、System.getProperty("file.separator")
はコマンドラインオプションを介してオーバーライドでき、Java.io.File.separator
ほどのタイプセーフではありません。
最後のJava.nio.file.FileSystems.getDefault().getSeparator();
はJava 7で導入されたため、古いJavaバージョン間でコードを移植可能にする場合は、今のところ無視してもかまいません。
したがって、これらのオプションはすべて他のオプションとほとんど同じですが、完全ではありません。ニーズに合ったものを選択してください。