那麼問題說,這可能是怎麼回事? 這個文件是我的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