Java: como obter um arquivo de uma URL de escape?

Estou recebendo um URL que localiza um arquivo local (o fato de eu receber um URL não está sob meu controle). O URL é escapado validamente, conforme definido no RFC2396. Como posso transformar isso em um objeto de arquivo Java?

Curiosamente, o método URL getFile () retorna uma String, não um File.

Eu criei um diretório chamado "/ tmp / some dir" (com um caractere de espaçamento entre "some" e "dir"), localizado corretamente pelo seguinte URL: "file: /// tmp / some% 20dir" (aspas adicionadas para maior clareza).

Como posso converter esse URL em um arquivo Java?

Para fornecer mais detalhes sobre o meu problema, o seguinte imprime false:

URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile() );
System.out.println( "Does dir exist? " + f.exists() );

Enquanto o seguinte (substituindo manualmente "% 20" por um espaço) é impresso como verdadeiro:

URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile().replaceAll( "%20", " " ) );
System.out.println( "Does dir exist? " + f.exists() );

Note que eu não estou perguntandoporque o primeiro exemplo imprime falso nemporque o segundo exemplo usando meu hackysubstitua tudo imprime true, estou perguntando como converter um URL de escape em um objeto Java File.

EDITAR: obrigado a todos, isso foi quase um estúpido, mas não exatamente.

Estupidamente, eu estava procurando por um método auxiliar dentro da própria classe de URL.

O seguinte funciona como esperado para obter um arquivo Java a partir de uma URL Java:

URL url = new URL( "file:///home/nonet/some%20dir" );
File f = new File( URLDecoder.decode( url.getFile(), "UTF-8" ) );

questionAnswers(3)

yourAnswerToTheQuestion