Java 如何在运行时修改Jar文件中的文本文件?
正如问题所说,这怎么可能? 这个文件是我的proyect结构(我正在使用eclipse) 当导出为Jar时,我可以使用下面的代码通过控制台访问和打印“root.ini”内容,但在运行时如何写入该文件 此方法是从“Main.java”调用的 我实际上要做的是从JTextField中获取一些文本,并将其保存到“root.ini”文件中 所以当我尝试像这样写入文件时Java 如何在运行时修改Jar文件中的文本文件?,java,jar,inputstream,bufferedreader,bufferedwriter,Java,Jar,Inputstream,Bufferedreader,Bufferedwriter,正如问题所说,这怎么可能? 这个文件是我的proyect结构(我正在使用eclipse) 当导出为Jar时,我可以使用下面的代码通过控制台访问和打印“root.ini”内容,但在运行时如何写入该文件 此方法是从“Main.java”调用的 我实际上要做的是从JTextField中获取一些文本,并将其保存到“root.ini”文件中 所以当我尝试像这样写入文件时 private void writeRoot() { URL u = getClass().getResource("/img
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)
您不能更改jvm当前使用的jar的任何内容。此文件被认为已被操作系统锁定,因此无法更改
我建议在jar文件之外编写这个文件。e、 g.在相对于当前工作目录的
/conf
目录中 .jar中的文件不是实际的文件<代码>新文件将永远无法工作。正如其他人会告诉你的那样,.jar中的文件是只读的。如果要编写新版本,请将其写入其他地方(临时文件、用户配置目录等),并在本地文件不存在时使用.jar中的文件作为备用文件。
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();
}
}