那么问题说,这可能是怎么回事? 这个文件是我的proyect结构(我使用的是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:\用户\弗朗西斯\桌面\ TDS> Java的罐子TDS.jar (未知源) at main.Configuracion.writeRoot(Configuracion.java:99) at main(“主题”) at main.Configuracion.writeRoot(Configuracion.java:99) at main .Configuracion.access $ 1(Configuracion。 java:95)
.jar中的文件不是实际的文件。 '新的文件'将永远不会工作。正如其他人会告诉你的,.jar中的文件是只读的。如果要编写新版本,请将其写入其他位置(临时文件,用户配置目录等),并在该本地文件不存在时将.jar中的文件用作后备文件。 – VGR