Отримайте об’єкт java.nio.file.Path з java.io.File


215

Чи можливо отримати об’єкт Path від java.io.File?

Я знаю, що ви можете перетворити шлях до файлу toFile()методом, але я не зміг знайти зворотне перетворення. Чи є спосіб зробити це на Java 6 або нижче?


Гаєв, ви подивилися документацію API?
Вівін Паліяф

Так, я побачив методи резолюції та резолюціїSibling, але це не точно перетворило з файлу (або рядка) в шлях, а скоріше зв'язало його.
Карловський120

1
Ось документація @VivinPaliath теж натякає.
Сприйняття

1
Мене дивує, як найглухіше можливе запитання (я маю на увазі, давай, це було в документації, короткий пошук у Google відповів би на це), що дає мені найбільше балів на сайті. : D
Карловський120

@ Karlovsky120 це не повинно вас дивувати, якщо ви спробуєте його самостійно
погуглювати

Відповіді:


288

Так, ви можете отримати його від Fileоб'єкта, використовуючи File.toPath(). Майте на увазі, що це лише для Java 7+. У версії Java 6 і нижче її немає.


1
Чи є спосіб досягти цього в Java 6 або нижче?
Карловський120

8
Pathбуло запроваджено на Java 7, тому, на жаль, немає можливості зробити це на Java 6 і нижче.
Вівін Паліяф

33

З документації :

Шляхи, пов'язані із замовчуванням, providerяк правило, сумісні з java.io.Fileкласом. Шляхи, створені іншими постачальниками, навряд чи будуть сумісні з абстрактними назвами шляхів, представленими символом java.io.File. Спосіб може бути використаний для отримання шляху від абстрактного імені шляху , представленого об'єктом java.io.File. Отриманий шлях може бути використаний для роботи з тим самим файлом, що і об'єкт. Крім того, метод корисний для побудови a з подання a .toPathjava.io.FiletoFileFileStringPath

(наголос мій)

Отже, для toFile:

Повертає Fileоб'єкт, що представляє цей шлях.

І toPath:

Повертає java.nio.file.Pathоб'єкт, побудований з цього абстрактного шляху.


1
Він хоче навпаки.
Вівін Паліяф

Я не заперечую це :). Я лише згадував, чого хотів ОП.
Вівін Паліяф


10

Як багато з них пропонують, JRE v1.7 і вище має File.toPath ();

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

У документації jdk 1.7 Oracle, яка також згадується в інших публікаціях вище, наступний еквівалентний код описаний в описі методу toPath (), який може працювати для JRE v1.6;

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.