我正在尝试为特定的文件格式编写转换器。应使用配置文件过滤转换后的文件。到目前为止,一切都很顺利,但我在打包的jar中读取文件时遇到了问题。
我的文件(Windows)具有以下结构:
converter/src/main/resources/files/AStoXES.properties
(还有3个属性文件)
如果我在Netbeans中执行此代码,一切正常,文件将被读取:
this.fileConfig = new PropertiesConfiguration(new File(testing.class.getClassLoader().getResource("files/AStoXES.properties").toURI()));
但是,如果我打包Apache Maven
执行clean install
并运行整个程序,我将获得java.lang.IllegalArgumentException: URI is not hierarchical
。
花了几个小时与谷歌共度时间后,我发现很多线程遇到了同样的问题并测试了很多东西,但这些提案都没有帮助我摆脱这个问题。
我需要将文件内容作为java.io.File
,因此使用Inputstream
和getResourceAsStream(argument)
无法帮助我,因为我需要使用其中的属性。< / p>
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
按照AndréStannek提供的链接(Loading a properties file from Java package)解决了这个问题。
这种方式可以阅读。不知道PropertiesConfiguration
也接受了InputStreams。
InputStream in = testing.class.getClassLoader().getResourceAsStream("files/AStoCSV.properties");
this.fileConfig = new PropertiesConfiguration();
this.fileConfig.load(in);
try {
in.close();
} catch (IOException ex) {
Logger.getLogger(ConverterControl.class.getName()).log(Level.SEVERE, null, ex);
}
感谢所有人。
答案 1 :(得分:0)
答案 2 :(得分:0)
作为解决方案/ hack,您可以创建一个临时文件(以及与此文件对应的OutputStream)然后&#34;写&#34;您的输入流进入输出流。您最终会获得原始文件的副本。