2013-03-19 5 views
135

からオブジェクトがjava.io.Fileからパスオブジェクトを取得することが可能ですか?取得java.nio.file.Path java.io.Fileの

私はあなたがtoFile()メソッドを使用してファイルへのパスを変換することができます知っているが、私は逆の変換を見つけることができませんでした。 Java 6以降でこれを行う方法はありますか?

+0

HaevあなたはAPIのドキュメントを見ましたか? –

+0

はい、resolveとresolveSiblingメソッドを見ましたが、これはファイル(または文字列)をパスに正確に変換するのではなく、むしろその方法で連結しました。 – Karlovsky120

+1

[documentation](http://docs.oracle.com/javase/7/docs/api/java/io/File.html#toPath())@VivinPaliathも同様です。 – Perception

答えて

173

はい、File.toPath()を使用してFileオブジェクトから取得できます。これはJava 7以上のためのものであることに留意してください。 Javaバージョン6以降にはそれがありません。

+1

Java 6以下でこれを達成する方法はありますか? – Karlovsky120

+4

'Path'はJava 7で導入されたので、残念ながらJava 6以降ではこれを行う方法がありません。 –

29

:デフォルトproviderに関連付けられている

パスがjava.io.Fileクラスと 一般的に相互運用が可能です。他のプロバイダによって作成されたパスは であり、 で表される抽象パス名との相互運用性はほとんどありません。java.io.Fileです。 toPath方法はjava.io.Fileのオブジェクトによって表される 抽象パス名とパスを取得するために使用することができます。 得パス java.io.Fileオブジェクトと同じファイルを操作するために使用することができます。またtoFile方法はPathString表現からFileを構築 に有用です。 toFileためだから

(強調鉱山)

は、このパスを表すFileオブジェクトを返します。

そしてtoPath

は、この抽象パスから構築java.nio.file.Pathオブジェクトを返します。

+1

彼は反対を望んでいます。 –

+3

@Vivin APIは両方を提供します... – wchargin

+0

私はそれについて論争しません:)。私はOPが望んでいたことだけを言いました。 –

5

多くの人が示唆しているように、JRE v1.7以上にはFile.toPath()があります。オラクルjdk 1.7 documentationまた、上記他の記事に記載された

File yourFile = ...; 
Path yourPath = yourFile.toPath(); 

、以下の同等のコードは、JREバージョン1.6のために働くことができるtoPath()メソッドの説明に記載されています。

File yourFile = ...; 
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath()); 
関連する問題