Java FileOutputStream访问被拒绝签名的applet

时间:2012-05-05 11:48:22

标签: java file-io applet filenotfoundexception

我正在开发一个必须访问访问者文件系统的Java Applet,因此当我打开{{1}时,我将.class文件压缩为具有自签名证书的.jar文件我的浏览器文件(文件位于call.html HTML标签),我接受安全弹出窗口,然后我在Java控制台中收到此错误:

  

java.security.AccessControlException:拒绝访问(java.io.FilePermission output.txt write)

我正在使用<applet>FileInputStreamFileOutputStream有效,但不是FileInputStream,为什么?

这是我的代码:

FileOutputStream

我尝试了多种方式来制作特权行动,try { AccessController.doPrivileged( new PrivilegedExceptionAction() { @Override public Object run() throws FileNotFoundException { outFile = new FileOutputStream("output.txt"); inFile = new FileInputStream("input.txt"); return "test"; } } ); } catch (PrivilegedActionException e) { throw (FileNotFoundException) e.getException(); } 始终有效,而FileInputStream则不然。 FileOutputStream不是只读文件。

1 个答案:

答案 0 :(得分:1)

使用策略文件授予访问权限,并启动appletviewer,其中包含要用于正在查看的applet的策略文件。

创建政策文件

策略工具是用于创建策略文件的Java 2平台安全工具。控制小程序的Java Tutorial跟踪解释了如何详细使用策略工具。以下是运行applet所需的策略文件。您可以使用策略工具创建它或将下面的文本复制到ASCII文件中。

grant {
       permission java.util.PropertyPermission 
   "user.home", "read";
       permission java.io.FilePermission 
   "${user.home}/text.txt", "read,write";
     };

以下是applets权限的完整链接 http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/data.html