java - JApplet写入文本文件,destroy()/stop()

标签 java applet destroy printwriter

我正在尝试编写一个 JApplet,它使用文本文件中的信息来加载和保存数据。我已成功让小程序加载信息,但保存似乎出现问题。我已在下面包含要保存的代码。我使用的文件名与我用来写入的文件名相同。当我运行时,该文件必须包含在 JAR 中,因为小程序会正确初始化。有什么原因导致书写不能正常工作吗?我已通过 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();

    }

最佳答案

您无法写入 JAR 文件内的文件——句号。甚至不要尝试。如果您需要写入文件,那么该文件必须位于 JAR 之外。对于小程序,这需要对其进行签名,并要求用户授予特定权限才能执行此操作。

在小程序的情况下,我不确定您希望写入 JAR 文件的哪个副本:浏览器缓存中的副本,还是服务器上的副本?不管怎样,这都不会发生。

关于java - JApplet写入文本文件,destroy()/stop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533306/

相关文章:

java - (n>3) 维度的 Delaunay 三角剖分

java - 创建您自己的地名词典列表

Java JApplet 将不再显示在任何浏览器中

ruby - 销毁ruby中的变量

javascript - KnockoutJs 1.3 测试版。 _销毁:false has same result on ui as _destroy:true

php - 创建javascript函数来销毁php session

java - 将现有键作为值添加到 java 属性文件中的新键

java - 如何获取从互联网上获取的 Drawable 并将其保存到我的 Android 设备的缓存目录中?

java - 改变数组

Java 在小程序重新加载时杀死守护线程