0

我正在尝试编写一个使用文本文件中的信息来加载和保存数据的 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();

    }

4

1 回答 1

2

您不能写入 JAR 文件中的文件 -- 句号。甚至不要尝试。如果您需要写入文件,则该文件必须位于 JAR 之外。对于小程序,这将需要对其进行签名,并要求用户获得特定权限才能这样做。

在小程序的情况下,我不确定您希望将写入 JAR 文件的哪个副本:浏览器缓存中的副本,还是服务器上的副本?无论哪种方式,它都不会发生。

于 2011-04-04T00:55:42.073 回答