ファイルの相対パスを知っていて、LinuxとWindowsの両方でFile
オブジェクトとして処理したい。
Javaでプラットフォームに依存しないパスを指定する最良の方法は何ですか?
File
クラスには、プラットフォーム固有のファイルパスに使用できる次のパブリックメンバーが含まれています。
static String pathSeparator
:
システム依存のパス区切り文字。便宜上、文字列として表されます。static char pathSeparatorChar
:
システム依存のパス区切り文字。static String separator
:
システム依存のデフォルトの名前区切り文字。便宜上、文字列として表されます。static char separatorChar
:
システム依存のデフォルトの名前区切り文字。
単に/
。私はそれを22年間使用しています。問題ありません。
Javaでは任意のパス区切り文字を使用でき、UnixとWindowsの両方で機能します。それでもシステムパスセパレータを使用したい場合は、 _File.separator
_ プロパティがあり、に応じて適切なプロパティを提供しますcurrentシステム。
ルートには、 listRoots()
を使用できます。これにより、ルートの配列が得られます。Unixシステムには要素が1つだけあります。 Windows上のドライブ。
静的フィールドFile.separatorを使用して、ファイルパスのプラットフォーム固有の区切り文字を取得できます。
JavaはFileオブジェクトのパスについて非常に賢いです。 「../foo/bar」のようなものを使用するだけで、これらの2つのプラットフォームとMacOSXで動作します。
Java 7は Paths
の使用もサポートしています
Pathは、デフォルトのFileSystemのgetPathメソッドを呼び出すことによって取得されます。
次に、以下を呼び出してファイルを取得できます。
File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile();
個人的には、一般的にパスを処理するためにEclipseのPathクラスを使用するのが好きです。