2009-04-22 14 views
11

Warum ist die Funktion java.io.File.toURL() veraltet? Ich muss eine URL an Toolkit.createImage() übergeben, die ein URL-Objekt akzeptiert. Javadoc empfiehlt mir, File.toURI().toURL() zu verwenden. Allerdings:File.toURL() veraltet?

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

wird:

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

, die offensichtlich einen ungültigen Dateipfad ist. Ich habe File.toURL() gefunden, um URLs ohne das Escaping zu erstellen, jedoch ist es veraltet. Obwohl es funktioniert, habe ich Angst, veraltete Funktionen zu verwenden. Was ist eine Methode, die nicht veraltet ist und die dasselbe tut?

EDIT: Gerade jetzt mein Code wie folgt aussieht:

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

EDIT: Ich brauche ein Bild aus einem Ordner außerhalb meiner .jar-Datei zu erstellen. Ich brauche einen relativen Speicherort ("./images/sprite1.png"). Die Methode createImage (String) löst eine Ausnahme aus, wenn ich versuche, den relativen Pfad anzugeben.

+1

Es ist für mich überhaupt nicht offensichtlich, warum Sie denken, dass die Escape-Version falsch ist. Zugegeben, ich würde wahrscheinlich + anstelle von% 20 erwarten, aber ich würde hoffen, dass es noch funktionieren würde. –

+4

Sollte nicht die zweite Datei sein: /// C:/Documents% 20and% 20settings/Administrator/...? – Powerlord

+0

Tatsächlich gibt mir die zweite Version eine Ausnahme, wenn sie an createImage() übergeben wird, während die erste gut funktioniert. Und ja, es ist Datei: /// ... – Lucky

Antwort

5

Warum verwenden Sie nicht einfach die createImage Funktion, die takes a String Dateiname stattdessen?

27

Verwendung: URL url2 = file.toURI(). ToURL();

+1

Nicht gleich, da Leerzeichen URL-codiert werden. – user2340939

0

ich denke, dass Sie die URL auf diese Weise

C schreiben müssen: in diesem

C/Dokumente und Einstellungen/Administrator/...

nicht: \ Dokumente und Einstellungen \ Administrator ...

3

Ich denke, das Recht t Antwort auf diese Frage die man in diesem Link http://www.jguru.com/faq/view.jsp?EID=1280051

Wie exponiert in dem obigen Link, der richtige Weg, dies zu tun ausgesetzt ist:

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

Es gibt keinen Haken für MalformedURLException als die Frage ist, Depretierung der Methode file.toURL().

Hoffnungen das hilft.