2009-04-22 22 views
11

¿Por qué está obsoleta la función java.io.File.toURL()? Necesito pasar una URL al Toolkit.createImage() que acepta un objeto URL. Javadoc me recomienda usar File.toURI().toURL(). Sin embargo:File.toURL() obsoleto?

C:\Documents and settings\Administrator\...

se convierte en:

C:\Documents%20and%20settings\Administrator\...

lo que obviamente es una ubicación de archivo no válido. Encontré File.toURL() para crear URL sin el escape, sin embargo, está en desuso. Aunque funciona, tengo miedo de usar funciones en desuso. ¿Qué es un método que no está en desuso y que hace lo mismo?

EDIT: Ahora mismo mi código es el siguiente:

spriteImage1 = tkit.createImage(new File("./images/sprite1.png").getCanonicalFile().toURL()); 

EDIT: Tengo que crear una imagen desde una carpeta fuera de mi archivo .jar. Necesitaré una ubicación relativa ("./images/sprite1.png"). El método createImage (String) arroja una excepción cuando trato de darle la ruta relativa.

+1

No es del todo obvio para mí por qué cree que la versión escapada es incorrecta. Es cierto que probablemente esperaría + en lugar de% 20, pero espero que todavía funcione. –

+4

¿No debería el segundo ser file: /// C:/Documents% 20and% 20settings/Administrator/...? – Powerlord

+0

En realidad, la segunda versión me da una excepción cuando se pasa a createImage() mientras que la primera funciona bien. Y sí, es archivo: /// ... – Lucky

Respuesta

14

No maneja los caracteres especiales correctamente según this bug.

5

¿Por qué no utiliza la función createImage que en su lugar tiene el nombre takes a String?

27

Uso: URL url2 = archivo.toURI(). ToURL();

+1

No es lo mismo, ya que los espacios tienen codificación URL. – user2340939

0

Creo que se debe escribir la url de esta manera

C:/Documents and Settings/Administrador/...

no

en este

C: \ Documents and settings \ Administrator ...

3

Creo que el derecho t respuesta a esta pregunta es la expuesta en este enlace http://www.jguru.com/faq/view.jsp?EID=1280051

Como se expone en el enlace de arriba, la manera correcta de hacerlo es:

// Supposing f is the referenced file in code and we want to 
// get an URL instance without deprecation warnings. 
URL externalForm = f.toURI().toURL(); 

No hay truco para MalformedURLException como la pregunta es sobre desaprobación del método file.toURL().

Espero que esto ayude.