我正在处理从一个特定文件夹中读取数据文件的applet(我们称之为“数据文件夹”)。文件数量及其名称可能会随着时间的推移而发生变化,因此我不想将它们严格地添加到代码中。我希望能够列出该文件夹中存储的所有文件(注意:文件夹与applet存储在同一服务器上)。我尝试使用Files.walkFileTree方法来做到这一点。当我在Eclipse中运行它时它工作正常,但我得到了AccessControlException:
java.security.AccessControlException: access denied ("java.io.FilePermission" "Data folder" "read")
当我试图在浏览器中运行时。
我可以看到为什么jvm想要限制applet在本地计算机上列出文件,但是是否可以列出存储在服务器上的文件?
答案 0 :(得分:2)
您必须区分客户端和服务器端代码。您的applet在客户端执行,因此无法直接使用Files.walkFileTree()
访问服务器的文件系统。
您可以做的是实现一个服务(如REST服务或简单的servlet)并在服务器端在Tomcat或Jetty servlet容器中运行它,然后从您的applet调用此服务。但要小心保证您的服务安全,这样每个人都不允许看到您服务器的整个文件系统。