2009-04-22 7 views
11

Dlaczego funkcja java.io.File.toURL() jest przestarzała? Muszę przekazać URL do Toolkit.createImage(), który akceptuje obiekt URL. Javadoc zaleca mi używanie File.toURI().toURL(). Jednakże:File.toURL() przestarzałe?

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

staje:

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

co oczywiście jest niewłaściwy lokalizację pliku. Znalazłem File.toURL(), aby utworzyć adresy URL bez funkcji escaping, ale jest przestarzałe. Mimo że działa, boję się używać przestarzałych funkcji. Jaka jest metoda, która nie jest przestarzała, co robi to samo?

EDIT: Teraz mój kod wygląda następująco:

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

EDIT: trzeba utworzyć obraz z folderu poza moim .jar. Potrzebuję względnej lokalizacji ("./images/sprite1.png"). Metoda createImage (String) zgłasza wyjątek podczas próby nadania jej względnej ścieżki.

+1

To wcale nie jest dla mnie oczywiste, dlaczego uważasz, że wersja uciekła jest błędna. Wprawdzie prawdopodobnie oczekiwałbym + zamiast% 20, ale mam nadzieję, że nadal będzie działać. –

+4

Nie powinien być drugi plik: /// C:/Documents% 20and% 20settings/Administrator/...? – Powerlord

+0

W rzeczywistości druga wersja daje mi wyjątek po przejściu do createImage(), podczas gdy pierwsza działa dobrze. I tak, to plik: /// ... – Lucky

Odpowiedz

27

Użyj: URL url2 = file.toURI(). ToURL();

+1

Nie to samo, ponieważ spacje mają zakodowany adres URL. – user2340939

0

myślę, że należy napisać adres URL w ten sposób

C:/Documents and Settings/Administrator/...

nie

w tym

C: \ Dokumenty i ustawienia \ Administrator ...

3

Myślę, że prawy t Odpowiedź na to pytanie jest jedna wystawiony w ten link http://www.jguru.com/faq/view.jsp?EID=1280051

Jak wystawiony w linku powyżej, właściwym sposobem na to jest:

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

Nie ma haczyk na MalformedURLException jak jest pytanie o wycofanie metody file.toURL().

Nadzieja, że ​​to pomaga.