Czy można uzyskać obiekt Path z java.io.File?
Wiem, że możesz przekonwertować ścieżkę do pliku za pomocą toFile()metody, ale nie mogłem znaleźć odwrotnej konwersji. Czy można to zrobić w Javie 6 lub nowszej?
Czy można uzyskać obiekt Path z java.io.File?
Wiem, że możesz przekonwertować ścieżkę do pliku za pomocą toFile()metody, ale nie mogłem znaleźć odwrotnej konwersji. Czy można to zrobić w Javie 6 lub nowszej?
Odpowiedzi:
Tak, możesz pobrać go z Fileobiektu za pomocą File.toPath(). Pamiętaj, że dotyczy to tylko Java 7+. Wersje Java 6 i niższe nie mają tego.
Pathzostał wprowadzony w Javie 7, więc niestety nie można tego zrobić w Javie 6 i niższych.
Z dokumentacji :
Ścieżki powiązane z domyślną
providersą na ogół interoperacyjne zjava.io.Fileklasą. Ścieżki utworzone przez innych dostawców raczej nie będą interoperacyjne z abstrakcyjnymi nazwami ścieżek reprezentowanymi przezjava.io.File. Metoda może być stosowana w celu uzyskania ścieżki od abstrakcyjnej nazwy ścieżki reprezentowanej przez obiekt java.io.File. Powstała ścieżka może być używana do działania na tym samym pliku, co obiekt. Ponadto metoda jest przydatna do skonstruowania z reprezentacji a .toPathjava.io.FiletoFileFileStringPath
(moje podkreślenie)
Tak więc dla toFile:
Zwraca
Fileobiekt reprezentujący tę ścieżkę.
I toPath:
Zwraca
java.nio.file.Pathobiekt zbudowany z tej abstrakcyjnej ścieżki.
Prawdopodobnie chcesz File.toPath().
Jak wielu sugerowało, JRE w wersji 1.7 i nowszej ma File.toPath ();
File yourFile = ...;
Path yourPath = yourFile.toPath();
W dokumentacji jdk 1.7 Oracle, wspomnianej również w innych postach powyżej, w opisie metody toPath (), która może działać w JRE v1.6, opisano następujący równoważny kod;
File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());