正如问题所说,这怎么可能? 这个文件是我的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:\ 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)
答案 0 :(得分:1)
您无法更改jvm当前使用的jar的任何内容。该文件被操作系统视为锁定,因此无法更改。
我建议在jar文件之外写这个文件。例如在相对于当前工作目录的/conf
目录中。