【发布时间】:2012-04-13 07:40:56
【问题描述】:
我正在加载一个道具并保存它
File propfile=new File(getClass().getResource("credentials.properties").toURI());
prop.load(new FileInputStream(propfile));
prop.setProperty("a", username);
prop.setProperty("c", password);
prop.setProperty("b", pbKey);
prop.store(new FileOutputStream(propfile), null);
当我通常在 netbeans 中运行它时它很好,当它捆绑到 .jar 文件中时它会抛出
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.(Unknown Source)
现在当我使用
getClass().getResourceAsStream("credentials.properties");
我可以读取文件,但我无法保存文件,除非我使用.toURI()
如 -> Storing changes in .properties file that has been read via getClass().getResourceAsStream
所以当我使用 toURI() 并运行它(jar 文件)时,它会大声说出URI is not hierarchical
当我使用 getResourceAsStream 时,我无法保存文件
我该怎么办? 属性文件与类在同一个包中。
【问题讨论】:
-
@cypronmaya : 为什么程序需要修改jar文件?我想你需要重新审视需求/设计。考虑一下 jar 根本不可写的情况。
-
@Jayan 我正在尝试构建一个桌面应用程序,其中一些参数由用户设置,例如用户名/密码等,以实现我想使用属性文件,因为它更容易.
-
@ cypronmaya :您可以在 jar 的属性中设置某种默认值。将修改后的内容保存在其他地方,比如 ${user.home}。
-
@cypronmaya Jayan 是对的,请查看下面我的答案以了解应该可行的实现。
标签: java file-io properties