由于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;
}
});
}
}
答案 0 :(得分:4)
AccessController.doPrivileged
没有按照你的想法 1 。
但首先是applet可以访问本地文件系统的两种(实际)方式。
您可能会注意到我没有在实际方法列表中列出“调整政策文件/设置”。那是因为它不太实际。至少不是因为部署它们的人控制目标机器的封闭内联网之外的任何东西(并且因此可以安装策略文件以允许小程序信任)。但在那种情况下,小程序的好处在任何情况下都会受到严重侵蚀。