2013-05-28 11 views
13

Używam funkcji Java 7 do odczytu w pliku. W tym celu potrzebuję obiektu typu Path. W moim kodzie korzystam z funkcji getResource(), aby uzyskać względną ścieżkę (typu URL) do pliku.Java 7: get Path of resource (jako obiekt typu Path)

Jednak teraz mam taki problem, że tak naprawdę nie teraz jak dostać się z obiektu typu URL do obiektu typu Path łatwo (bez konieczności przechodzenia przez odlewów do np URI następnie File i od tego do Path)?

Oto przykład, aby pokazać, co chciałbym zrobić:

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()); 

Więc jest łatwiejszy sposób, aby osiągnąć i nie trzeba robić, że kod bałagan on line 2?

Odpowiedz

15

Jak o

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

To nie jest właściwe, aby utworzyć plik z adresu URL, ponieważ jest to dostał od ścieżki klasy i plik może rzeczywiście być w słoiku.

1

W Scala byłoby

import java.nio.file.Paths 

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

W Javie powinna być taka sama (z nieco innej składni)