如何从JavaJAR文件中读取资源文件?

如何从JavaJAR文件中读取资源文件?

我试图从一个单独的JAR文件中访问一个XML文件,这个JAR是作为桌面应用程序运行的。我可以获得我需要的文件的URL,但是当我将它传递给FileReader(作为字符串)时,我会得到一个FileNotFoundException,上面写着“文件名、目录名或卷标签语法不正确”。


作为参考,我可以从同一个JAR中读取图像资源,将URL传递给ImageIcon构造函数。这似乎表明我用来获取URL的方法是正确的。


URL url = getClass().getResource("/xxx/xxx/xxx/services.xml");

ServicesLoader jsl = new ServicesLoader( url.toString() );

在ServicesLoader类中


XMLReader xr = XMLReaderFactory.createXMLReader();

xr.setContentHandler( this );

xr.setErrorHandler( this );

xr.parse( new InputSource( new FileReader( filename )));

使用这种技术读取XML文件有什么问题?


慕无忌1623718
浏览 684回答 3
3回答

撒科打诨

你不会说这是桌面还是网络应用。我会用getResourceAsStream()方法来自适当的ClassLoader(如果是桌面)或上下文(如果是Web应用程序)。

catspeake

如果您使用的是URL.toString结果作为FileReader构造函数URL.toString有一点坏了,所以您应该通常使用url.toURI().toString()..在任何情况下,字符串都不是文件路径。相反,您应该要么:通过URL到ServicesLoader让它召唤openStream或者类似的。使用Class.getResourceAsStream然后穿过溪流,可能在一个InputSource..(请记住检查空值,因为API有点混乱。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java