Obtenha o objeto java.nio.file.Path a partir de java.io.File

215

É possível obter um objeto Path de a java.io.File?

Eu sei que você pode converter um caminho para um arquivo usando o toFile()método, mas não consegui encontrar a conversão oposta. Existe uma maneira de fazer isso no Java 6 ou inferior?

Karlovsky120
fonte
Haev você olhou para a documentação da API?
Vivin Paliath 19/03/2013
Sim, vi os métodos resolve e resolveSibling, mas que não foram convertidos exatamente de arquivo (ou string) para caminho, mas sim, de certa forma.
Karlovsky120
1
Aqui está a documentação que @VivinPaliath também faz alusão.
Percepção
1
Surpreende-me como a pergunta mais estúpida possível (quer dizer, vamos lá, estava na documentação, uma breve pesquisa no Google teria respondido) está me dando mais pontos no site. : D
Karlovsky120
@ Karlovsky120 não deve surpreendê-lo se você tentar google-lo você mesmo;)
9ilsdx 9rvj 0lo

Respostas:

288

Sim, você pode obtê-lo do Fileobjeto usando File.toPath(). Lembre-se de que isso é apenas para Java 7+. As versões Java 6 e abaixo não a possuem.

Vivin Paliath
fonte
1
Existe uma maneira de conseguir isso no Java 6 ou inferior?
Karlovsky120
8
Pathfoi introduzido no Java 7, então, infelizmente, não há como fazer isso no Java 6 e abaixo.
Vivin Paliath
33

A partir da documentação :

Os caminhos associados ao padrão providergeralmente são interoperáveis ​​com a java.io.Fileclasse. É improvável que os caminhos criados por outros provedores sejam interoperáveis ​​com os nomes de caminho abstratos representados por java.io.File. O toPathmétodo pode ser usado para obter um caminho a partir do nome do caminho abstrato representado por um objeto java.io.File. O caminho resultante pode ser usado para operar no mesmo arquivo que o java.io.Fileobjeto. Além disso, o toFilemétodo é útil para construir a Filepartir da Stringrepresentação de a Path.

(ênfase minha)

Então, para toFile:

Retorna um Fileobjeto que representa esse caminho.

E toPath:

Retorna um java.nio.file.Pathobjeto construído a partir desse caminho abstrato.

wchargin
fonte
1
Ele quer o contrário.
Vivin Paliath 19/03/2013
Eu não contesto isso :). Eu estava apenas mencionando o que o OP queria.
Vivin Paliath 19/03/2013
10

Como muitos sugeriram, o JRE v1.7 e superior tem File.toPath ();

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

Na documentação do Oracle jdk 1.7, que também é mencionada em outras postagens acima, o código equivalente a seguir é descrito na descrição do método toPath (), que pode funcionar no JRE v1.6;

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