我正在尝试编写一个JApplet,它使用文本文件中的信息来加载和保存数据。我已成功获取applet以加载信息,但保存似乎有问题。我已将代码保存在下面。我使用的文件名与我用来写的相同。我运行时该文件必须包含在JAR中,因为applet正确初始化。有没有理由说写作不正常?我已经从stop()和destroy()方法中调用了这个方法。
作为一个注释,从eclipse运行时,加载和保存都能正常工作,但是在JAR中只有加载工作,但没有任何保存,所以我无法更改加载数据。
理想情况下,我希望在关闭或刷新页面时调用此saveLocations()方法。
注意:mOUtputStream确实是一个PrintWriter(它曾经是一个OutputStream,我想我应该更改名称)
非常感谢您的帮助。
private void saveLocations() throws IOException {
//JOptionPane.showMessageDialog(null, "Alert", "Saving", JOptionPane.INFORMATION_MESSAGE);
// System.out.println("saving!");
try {
mOutputStream = new PrintWriter(new File(getClass().getResource("/listings/saveData.txt").toURI()));
}
catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println(locations.size());
for (Location l : locations) {
System.out.println("r: " + l.getRawListing());
mOutputStream.print(l.getRawListing()+ "\n");
}
if (mOutputStream != null)
mOutputStream.close();
}
答案 0 :(得分:2)
您无法写入JAR文件中的文件 - 期间。甚至不尝试。如果需要写入文件,则该文件必须位于JAR之外。对于小程序,需要对其进行签名,并要求用户具有相应的特定权限。
在applet的情况下,我不确定你希望写入的JAR文件的副本是什么:浏览器缓存中的副本,还是服务器上的副本?无论哪种方式,它都不会发生。