我正在编写一个 Java Applet,它需要列出服务器目录中的 ZIP 文件,并让用户选择要加载的 ZIP 文件。
我阅读文件的方式:
- 创建一个
java.io.File
对象来保存该 ZIP 文件 - 用来
java.util.zip.ZipFile
读取里面的数据
我解决这个问题的第一种方法是在服务器的applet jar 文件的同一目录中创建一个文件夹,然后将这些ZIP 文件放在那里。
位置类似于图表的a.gif。
起初我试图阅读整个目录并得到一个错误。
- java.security.AccessControlException:访问被拒绝(java.io.FilePermission\Data 读取)
在网上我发现applet没有这个功能,所以我试着只读取一个特定的文件,但不知何故,仍然有错误。
- java.security.AccessControlException:访问被拒绝(java.io.FilePermission\Data\pack1.zip 读取)
我试着用谷歌搜索这个问题,似乎java.io.File
服务器上的类读取文件有问题。所以我采用不同的方法。
我尝试的第二种方法是启动 FTP 服务,允许该小程序获取这些 ZIP 文件。
我使用 Apache Commons Net 来处理 FTP。
小程序能够连接到 FTP 服务器,但在FTPClient.listFile()
调用日志时显示错误。
- java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission org.apache.commons.net.ftp.systemType 读取)
我知道沙盒小程序有很多限制,但是从甲骨文的文档看来,沙盒小程序应该能够从它起源的服务器中检索资源,所以我对如何读取该文件夹感到很困惑来自我未签名的小程序的 ZIP 文件。另外,如果你们对解决此问题的更好方法有任何建议,那就太好了。
仅供参考,服务器运行的是 Windows Server 2003,我使用 JDK 6 开发小程序。