如何在java中的applet中写入文件?

时间:2013-06-30 08:21:52

标签: java security applet

由于Applets在浏览器中以沙盒模式运行,因此我使用AccessController.doPrivileged来写入文件。它在Eclipse中运行时写入文件,但在浏览器中访问applet时不写入。 我错过了什么?这是代码:

public class HelloWorld extends Applet {

    public void paint(Graphics g) {
        AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
            public Boolean run() {
                try {
                    System.out.println(System.getProperty("user.home"));
                    String userHome = System.getProperty("user.home");
                    FileWriter fw = new FileWriter(userHome + File.separator
                            + "test" + File.separator + "area.txt");
                    fw.write("The area is 20m");
                    fw.flush();
                    fw.close();

                } catch (IOException ioe) {
                    System.err.println(ioe);
                }
                return Boolean.TRUE;
            }
        });
    }
}

1 个答案:

答案 0 :(得分:4)

AccessController.doPrivileged没有按照你的想法 1

但首先是applet可以访问本地文件系统的两种(实际)方式。

  • 对applet进行数字签名,然后在提示时让用户确认该applet。
  • 在1.6.0_10 + JRE中运行的嵌入式applet还可以访问JNLP API的服务,其中包括JNLP API文件服务。他们可以在沙盒应用程序中工作。 - 它们只是在applet加载或保存文件时提示用户。当然,使用JWS启动的自由浮动小程序可以在Java 1.2之后执行相同的操作,但是从1.6.0_10开始,这些相同的小程序可以保持嵌入状态。在小应用中查看demo. of the file services。完整的源代码,或其他small animated GIF maker用于嵌入式小程序。

您可能会注意到我没有在实际方法列表中列出“调整政策文件/设置”。那是因为它不太实际。至少不是因为部署它们的人控制目标机器的封闭内联网之外的任何东西(并且因此可以安装策略文件以允许小程序信任)。但在那种情况下,小程序的好处在任何情况下都会受到严重侵蚀。

  1. 它的作用是允许使用不受信任的来源(如JavaScript)调用 已被信任 的小程序。如果添加实际上确实改变了applet的安全环境而没有大量的铃声和口哨警告最终用户,那么它将是安全漏洞。