2013-03-19 1 views
135

Возможно ли получить объект Path из java.io.File?Получить java.nio.file.Path объект из java.io.File

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

+0

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

+0

Да, я видел решения и решал методы Sibling, но это точно не преобразовывало из файла (или строки) в путь, а скорее приводило его в соответствие. – Karlovsky120

+1

Вот [документация] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#toPath()) @VivinPaliath тоже намекает. – Perception

ответ

173

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

+1

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

+4

'Path' был представлен на Java 7, поэтому, к сожалению, в Java 6 и ниже этого не существует. –

29

От the documentation:

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

(курсив мой)

Так, toFile:

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

И toPath:

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

+1

Он хочет наоборот. –

+3

@Vivin API предоставляет оба ... – wchargin

+0

Я не оспариваю это :). Я просто упоминал, чего хотел OP. –

5

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

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

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