145

プラットフォームに依存しない「ファイルセパレータ」プラットフォームに依存しないようにするには、3つの同じ方法があるようです。

いつどちらを使用するかをどのように決定しますか?

それらの間に違いはありますか?

4

2 に答える 2

153

System.getProperties()System.setProperty(String key, String value)コマンドラインパラメータの呼び出しまたはコマンドラインパラメータを使用してオーバーライドできます-Dfile.separator=/

File.separatorデフォルトのファイルシステムのセパレータを取得します。

FileSystems.getDefault()デフォルトのファイルシステムを取得します。

FileSystem.getSeparator()ファイルシステムの区切り文字を取得します。1つのJVMで複数のファイルシステムを操作するコードが必要な場合は、インスタンスメソッドとしてこれを使用して、デフォルト以外のさまざまなファイルシステムをコードに渡すことができます。

于 2011-11-10T05:46:59.227 に答える
32

コードがファイルシステムの境界を越えない場合、つまり1つのファイルシステムで作業している場合は、を使用しますjava.io.File.separator

これにより、説明したように、FSのデフォルトの区切り文字が取得されます。Bringer128が説明したように、System.getProperty("file.separator")コマンドラインオプションを介してオーバーライドでき、タイプセーフではありませんjava.io.File.separator

最後の1つjava.nio.file.FileSystems.getDefault().getSeparator();はJava7で導入されたため、古いJavaバージョン間でコードを移植できるようにする場合は、今のところ無視することをお勧めします。

したがって、これらのオプションはすべて他のオプションとほとんど同じですが、完全ではありません。ニーズに合ったものを選択してください。

于 2011-11-10T05:51:00.277 に答える