Получить объект java.nio.file.Path из файла java.io.File


215

Можно ли получить объект Path от a java.io.File?

Я знаю, что вы можете преобразовать путь к файлу, используя toFile()метод, но я не смог найти обратное преобразование. Есть ли способ сделать это в Java 6 или ниже?


Вы смотрели документацию по API?
Вивин Палиат

Да, я видел методы resolv и resolSibling, но они не совсем конвертировались из файла (или строки) в путь, а скорее констатировали его.
Karlovsky120

1
Вот документация, на которую ссылается @VivinPaliath.
Восприятие

1
Меня удивляет, как самый глупый вопрос (я имею в виду, это было в документации, короткий поиск в Google ответил бы на него) приносит мне наибольшее количество баллов на сайте. : D
Karlovsky120

@ Karlovsky120 это не должно удивлять вас, если вы попытаетесь гуглить это самостоятельно;)
9ilsdx 9rvj 0lo

Ответы:


288

Да, вы можете получить его с помощью Fileобъекта File.toPath(). Имейте в виду, что это только для Java 7+. У версий Java 6 и ниже его нет.


1
Есть ли способ добиться этого в Java 6 или ниже?
Karlovsky120

8
Pathбыла введена в Java 7, поэтому, к сожалению, нет способа сделать это в Java 6 и ниже.
Вивин Палиат

33

Из документации :

Пути, связанные со значением по умолчанию provider, обычно совместимы с java.io.Fileклассом. Пути, созданные другими поставщиками, вряд ли будут взаимодействовать с абстрактными именами путей, представленными java.io.File. Этот toPathметод может использоваться для получения Path из абстрактного имени пути, представленного объектом java.io.File. Полученный путь может использоваться для работы с тем же файлом, что и java.io.Fileобъект. Кроме того, toFileметод полезен для построения a Fileиз Stringпредставления a Path.

(акцент мой)

Итак, для toFile:

Возвращает Fileобъект, представляющий этот путь.

И toPath:

Возвращает java.nio.file.Pathобъект, созданный из этого абстрактного пути.


1
Он хочет обратного.
Вивин Палиат

Я не оспариваю это :). Я просто упомянул, что хотел ОП.
Вивин Палиат


10

Как многие предполагали, JRE v1.7 и выше имеет File.toPath ();

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

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

File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.