Pobierz obiekt java.nio.file.Path z pliku java.io.File


215

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 widziałeś dokumentację API?
Vivin Paliath,

Tak, widziałem metody resol i resolSibling, ale to nie dokładnie przekonwertowało z pliku (lub łańcucha) na ścieżkę, ale raczej w pewien sposób je podsumowało.
Karlovsky120,

1
Oto dokumentacja, do której nawiązuje również @VivinPaliath.
Percepcja

1
Zaskakuje mnie, jak najgłupsze możliwe pytanie (to znaczy, daj spokój, było w dokumentacji, odpowiedziałoby na to krótkie wyszukiwanie w Google) daje najwięcej punktów na stronie. : D
Karlovsky120,

@ Karlovsky120 nie powinno cię dziwić, gdybyś sam spróbował google;)
9ilsdx 9rvj 0lo

Odpowiedzi:


288

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.


1
Czy istnieje sposób na osiągnięcie tego w Javie 6 lub niższej?
Karlovsky120

8
Pathzostał wprowadzony w Javie 7, więc niestety nie można tego zrobić w Javie 6 i niższych.
Vivin Paliath

33

Z dokumentacji :

Ścieżki powiązane z domyślną providersą na ogół interoperacyjne z java.io.Fileklasą. Ścieżki utworzone przez innych dostawców raczej nie będą interoperacyjne z abstrakcyjnymi nazwami ścieżek reprezentowanymi przez java.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.


1
On chce czegoś przeciwnego.
Vivin Paliath,

Nie podważam tego :). Właśnie wspomniałem o tym, czego chciał PO.
Vivin Paliath,


10

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());
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.