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?


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.


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.


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());
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.