2010-04-26 32 views
4

我想使用類加載器打開文件。不過,我總是得到一個FileNotFoundException。如何使用URL創建新文件?我不想像文件一樣將它作爲流打開。如何使用Class Loader作爲文件加載資源?

URL url = VersionUpdater.class.getResource("xslt/screen/foo"); 
File f = ... 

回答

3

要將file://... URL轉換爲java.io.File,你就必須既url.getPath()url.toURI()一個安全的解決方案相結合:

File f; 
try { 
    f = new File(url.toURI()); 
} catch(URISyntaxException e) { 
    f = new File(url.getPath()); 
} 

在此blog post完整的解釋。

0

我只是在想:如果foo是在一個罐子裏?然後你不能構建一個文件。

如果foo確實位於(本地)類路徑目錄中,它應該可以工作 - 但是,如果有人將其打包在jar中,或者通過網絡加載,它將會失敗。 。