Dapatkan objek java.nio.file.Path dari java.io.File

215

Apakah mungkin untuk mendapatkan objek Path dari java.io.File?

Saya tahu Anda dapat mengonversi jalur ke file menggunakan toFile()metode, tetapi saya tidak dapat menemukan konversi yang berlawanan. Apakah ada cara untuk melakukan ini di Java 6 atau lebih rendah?

Karlovsky120
sumber
Pernahkah Anda melihat dokumentasi API?
Vivin Paliath
Ya, saya melihat metode tekad dan tekadSibling, tapi itu tidak benar-benar mengkonversi dari file (atau string) ke path, tetapi agak menyimpulkannya dengan cara.
Karlovsky120
1
Berikut ini dokumentasi @VivinPaliath yang disinggung juga.
Persepsi
1
Ini mengherankan saya bagaimana pertanyaan paling bodoh mungkin (maksud saya, ayolah, itu ada di dokumentasi, pencarian google singkat akan menjawabnya) adalah jaring saya poin terbanyak di situs. : D
Karlovsky120
@ Karlovsky120 seharusnya tidak memukau Anda jika Anda akan mencoba untuk google sendiri;)
9ilsdx 9rvj 0lo

Jawaban:

288

Ya, Anda bisa mendapatkannya dari Fileobjek dengan menggunakan File.toPath(). Perlu diingat bahwa ini hanya untuk Java 7+. Versi Java 6 dan di bawahnya tidak memilikinya.

Vivin Paliath
sumber
1
Apakah ada cara untuk mencapai ini di Java 6 atau lebih rendah?
Karlovsky120
8
Pathdiperkenalkan di Java 7, jadi sayangnya tidak ada cara untuk melakukan ini di Java 6 dan di bawah.
Vivin Paliath
33

Dari dokumentasi :

Jalur yang terkait dengan default providerumumnya dapat dioperasikan dengan java.io.Filekelas. Jalur yang dibuat oleh penyedia lain kemungkinan tidak dapat dioperasi dengan nama jalur abstrak yang diwakili oleh java.io.File. The toPathMetode dapat digunakan untuk mendapatkan jalan dari nama jalan abstrak diwakili oleh objek java.io.File. Path yang dihasilkan dapat digunakan untuk beroperasi pada file yang sama dengan java.io.Fileobjek. Selain itu, toFilemetode ini berguna untuk membangun Filedari Stringrepresentasi a Path.

(penekanan milikku)

Jadi, untuk toFile:

Mengembalikan Fileobjek yang mewakili jalur ini.

Dan toPath:

Mengembalikan java.nio.file.Pathobjek yang dibangun dari jalur abstrak ini.

wchargin
sumber
1
Dia menginginkan yang sebaliknya.
Vivin Paliath
Saya tidak membantah itu :). Saya hanya menyebutkan apa yang diinginkan OP.
Vivin Paliath
10

Seperti yang banyak disarankan, JRE v1.7 dan di atasnya memiliki File.toPath ();

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

Pada dokumentasi jdk 1.7 Oracle yang juga disebutkan dalam posting lain di atas, kode setara berikut ini dijelaskan dalam deskripsi untuk metode toPath (), yang mungkin bekerja untuk JRE v1.6;

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
dArtagnon
sumber