web-dev-qa-db-ja.com

Javaのプラットフォームに依存しないパス

ファイルの相対パスを知っていて、LinuxとWindowsの両方でFileオブジェクトとして処理したい。

Javaでプラットフォームに依存しないパスを指定する最良の方法は何ですか?

62
jakewins

File クラスには、プラットフォーム固有のファイルパスに使用できる次のパブリックメンバーが含まれています。

static String pathSeparator
システム依存のパス区切り文字。便宜上、文字列として表されます。
static char pathSeparatorChar
システム依存のパス区切り文字。
static String separator
システム依存のデフォルトの名前区切り文字。便宜上、文字列として表されます。 static char separatorChar
システム依存のデフォルトの名前区切り文字。

49
jjnguy

単に/。私はそれを22年間使用しています。問題ありません。

88
user207421

Javaでは任意のパス区切り文字を使用でき、UnixとWindowsの両方で機能します。それでもシステムパスセパレータを使用したい場合は、 _File.separator_ プロパティがあり、に応じて適切なプロパティを提供しますcurrentシステム。

ルートには、 listRoots() を使用できます。これにより、ルートの配列が得られます。Unixシステムには要素が1つだけあります。 Windows上のドライブ。

13
Colin Hebert

静的フィールドFile.separatorを使用して、ファイルパスのプラットフォーム固有の区切り文字を取得できます。

7

JavaはFileオブジェクトのパスについて非常に賢いです。 「../foo/bar」のようなものを使用するだけで、これらの2つのプラットフォームとMacOSXで動作します。

5
Steven Ourada

Java 7は Paths の使用もサポートしています

Pathは、デフォルトのFileSystemのgetPathメソッドを呼び出すことによって取得されます。

次に、以下を呼び出してファイルを取得できます。

File fileSystemObtainedFile = Paths.get("C:\\foo\\bar.txt").toFile();
3
ccDict

個人的には、一般的にパスを処理するためにEclipseのPathクラスを使用するのが好きです。

http://grepcode.com/file/repository.grepcode.com/Java/Eclipse.org/3.5/org.Eclipse.equinox/common/3.5.0/org/Eclipse/core/runtime/Path。 Java /?v = source

1
Chris Dennett