2009-04-22 393 views
11

爲什麼函數java.io.File.toURL()不推薦使用?我需要傳遞一個URL到Toolkit.createImage(),它接受一個URL對象。 Javadoc建議我使用File.toURI().toURL()。但是:File.toURL()已棄用?

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

變爲:

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

這顯然是一個無效的文件位置。我發現File.toURL()創建的URL沒有轉義,但它已被棄用。雖然它起作用,但我害怕使用棄用的函數。什麼是不被棄用的做同樣的事情的方法?

編輯:現在我的代碼如下所示:

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

編輯:我需要超出了我的.jar文件創建一個文件夾中的圖片。我需要一個相對位置(「./images/sprite1.png」)。當我嘗試給它一個相對路徑時,createImage(String)方法拋出一個異常。

+1

這對我來說並不是顯而易見的,你爲什麼認爲逃跑的版本是錯誤的。無可否認,我可能會期望+而不是%20,但我希望它仍然有效。 – 2009-04-22 14:18:33

+4

不應該是第二個文件:/// C:/ Documents%20and%20settings/Administrator/...? – Powerlord 2009-04-22 14:18:47

回答

27

使用: URL url2 = file.toURI()。toURL();

0

我認爲你必須寫的網址以這種方式

C:/ Documents和設置/管理/ ...

在此

C: \文件和設置\管理員...

3

我認爲正義牛逼的回答這個問題是一個在這個環節http://www.jguru.com/faq/view.jsp?EID=1280051

正如上面的鏈接暴露暴露出來,這樣做的正確方法是:

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

沒有漁獲MalformedURLException的的問題是關於棄用方法file.toURL()。

希望這有助於。