プラットフォームに依存しない「ファイルセパレータ」プラットフォームに依存しないようにするには、3つの同じ方法があるようです。
いつどちらを使用するかをどのように決定しますか?
それらの間に違いはありますか?
プラットフォームに依存しない「ファイルセパレータ」プラットフォームに依存しないようにするには、3つの同じ方法があるようです。
いつどちらを使用するかをどのように決定しますか?
それらの間に違いはありますか?
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
。
最後の1つjava.nio.file.FileSystems.getDefault().getSeparator();
はJava7で導入されたため、古いJavaバージョン間でコードを移植できるようにする場合は、今のところ無視することをお勧めします。
したがって、これらのオプションはすべて他のオプションとほとんど同じですが、完全ではありません。ニーズに合ったものを選択してください。