ti-enxame.com

Converter URL em AbsolutePath

Existe alguma maneira fácil de converter um URL que contenha caracteres de dois bytes em um caminho absoluto?

A razão pela qual pergunto é que estou tentando encontrar recursos como este:

URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);

O programa não consegue encontrar o arquivo. Eu sei que o caminho contém '% 20' para todos os espaços que eu poderia converter, mas meu problema real é que eu estou usando um sistema operacional japonês e quando o arquivo jar do programa está em um diretório com texto em japonês (por exemplo, デ ス ク ト ッ), recebo o - codificação de URL do nome do diretório, assim:

% e3% 83% 87% e3% 82% b9% e3% 82% af% e3% 83% 88% e3% 83% 83% e3% 83% 97

Eu acho que poderia obter os códigos de bytes UTF-8 e convertê-los nos caracteres adequados para encontrar o arquivo, mas estou pensando se existe uma maneira mais fácil de fazer isso. Qualquer ajuda seria muito apreciada.

nt

16
nite
URL url=getClass().getResource("/getresources/test.txt");
File f=new File(url.toURI());
42
Noel Ang

File possui um construtor que aceita um argumento do tipo Java.net.URI para este caso:

File f = new File(url.toURI());
8
Moritz

Se você estava interessado em obter Path do URL, você pode:

Path p = Paths.get(url.toURI());
2
Mincong Huang