2010-04-26 49 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中,或者通过网络加载,它将会失败。 。