web-dev-qa-db-ja.com

Java 7:リソースのパスを取得(Path型のオブジェクトとして)

Java 7の機能を使用してファイルを読み込みます。そのためには、タイプPathのオブジェクトが必要です。コードでは、getResource()ファイルへの相対パス(タイプURL)を取得する関数。

しかし、今では、タイプURLのオブジェクトからタイプPathのオブジェクトに簡単に移動する方法が実際にはわからないという問題があります(なしたとえば、URI、次にFile、そしてそこからPath)へのキャストを実行しますか?

これが私がやりたいことを示す例です:

URL url = getClass().getResource("file.txt");
Path path = (new File(url.toURI())).toPath(); //is there an easier way?
List<String> list = Files.readAllLines(path, Charset.defaultCharset());

それで、それを達成するためのより簡単な方法があり、2行目でそのコードの混乱をする必要はありませんか?

21
navige

どうですか

Path path = Paths.get(url.toURI());

URLからファイルを作成することは適切ではありません。これは、ファイルがクラスパスから取得され、ファイルが実際にはjar内にある可能性があるためです。

26
Lolo

In Scalaは

import Java.nio.file.Paths

val resource = getClass.getResource("myfile.txt")
val path = Paths.get(resource.toURI)

In Javaは同じである必要があります(構文が少し異なります)

1