我想制作一个能够将文件下载到计算机的Applet,然后在相关的编辑器中打开它们(保存文件后,它应该再次上传回来)。但是,在我花几个小时让它工作之前,我必须确保它实际上是可管理的(已经使用 Java 桌面应用程序而不是 Applet 完成了它)。
所以我写了一个简单的小程序,如果它不存在,它会创建一个文件。该应用程序已签名并按原样加载到浏览器中。以下内容被写入屏幕:
IO 异常:访问被拒绝
我已经标记了不同的错误,所以我知道哪个错误。下面是我的小程序:
import javax.swing.*;
import java.security.*;
import java.io.*;
public class DocumentApplet extends JApplet
{
private static final long serialVersionUID = -2354727776089972258L;
public void start ()
{
add ( new JButton ("Hello, World") );
AccessControlContext acc = (AccessControlContext) System.getSecurityManager().getSecurityContext();
try
{
acc.checkPermission(new FilePermission("test.txt", "write"));
}
catch (SecurityException e)
{
add (new JLabel ("Permission Exception: " + e.getMessage()));
return;
}
try
{
File f = AccessController.<File>doPrivileged(new PrivilegedAction<File>()
{
public File run()
{
return new File ("test.txt");
}
});
if ( ! f.exists())
{
f.createNewFile();
}
}
catch (AccessControlException e)
{
add (new JLabel ("Access: " + e.getMessage()));
}
catch (IOException e)
{
add ( new JLabel ("IO Exception: " + e.getMessage()));
}
}
}
这是抛出的最后一个异常。请注意,我做的第一件事是检查权限。该检查不会失败。
Applet 是自签名的,但这只是暂时的。如果小程序失败,我不想花数百美元购买证书。
当我使用appletviewer运行应用程序时,代码可以工作。没关系,但我需要知道当我购买真正的证书时它会起作用。
HTML 代码:
<applet code="DocumentApplet" archive="applet.jar" width="300" height="200">
</applet>
环境:Windows7 + JDK 1.7.0_05
PS:最近两天我还阅读了 Stackoverflow 和 Google 搜索。我坚信我已经做了我应该做的一切......