【发布时间】:2016-05-06 11:14:00
【问题描述】:
正如问题所说,这怎么可能? 这个文件是我的项目结构(我使用的是 eclipse)。
当导出为 Jar 时,我可以使用以下代码通过控制台访问和打印“root.ini”内容,但是,如何在运行时写入该文件?
这个方法是从'Main.java'调用的
private void readRoot(){
InputStream is = getClass().getResourceAsStream("/img/root.ini");
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(is));
String path = "";
try {
path = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(path);
}
我实际上想做的是从 JTextField 中获取一些文本,并将其保存到“root.ini”文件中。
所以当我尝试像这样写入该文件时
private void writeRoot() {
URL u = getClass().getResource("/img/root.ini");
File f = null;
try {
f = new File(u.toURI());
FileWriter fw = new FileWriter(f.getAbsolutePath());
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Sample text"); //This String is obtained from a TextField.getText();
bw.close();
fw.close();
} catch (URISyntaxException | IOException e) {
e.printStackTrace();
}
}
然后抛出这个错误
C:\Users\Francisco\Desktop\tds>java -jar TDS.jar 线程“AWT-EventQueue-0”java.lang.IllegalArgumentException 中的异常:URI 不是分层的 在 java.io.File.(未知来源) 在 main.Configuracion.writeRoot(Configuracion.java:99) 在 main.Configuracion.access$1(Configuracion.java:95)
【问题讨论】:
-
.jar 中的文件不是实际文件。
new File永远不会工作。正如其他人会告诉你的那样,.jar 中的文件是只读的。如果要编写新版本,请将其写入其他位置(临时文件、用户配置目录等),并在本地文件不存在时使用 .jar 中的文件作为备用。
标签: java jar inputstream bufferedreader bufferedwriter