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

215

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

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

Karlovsky120
источник
Вы смотрели документацию по 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объект, созданный из этого абстрактного пути.

wchargin
источник
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());
dArtagnon
источник