使用GWT列出目录中的文件

时间:2011-11-07 13:16:49

标签: file gwt file-io filesystems

我尝试了以下代码,

File folder = new File("/path/of/the/directory");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        if ((listOfFiles[i].getName()).contains(".xml")) {
            Window.alert("File " + listOfFiles[i].getName());
        }
    }
}

但是,我收到了这个错误:

No source code is available for type java.io.File; did you forget to inherit a required module ?

任何人都可以帮我使用GWT做同样的事吗?

提前致谢, Gnik

2 个答案:

答案 0 :(得分:4)

简短回答

您不能在GWT中使用Java.io.File类。

除非您使用gwt-filesystem

“大”回答

来自groups

  

您将无法在客户端上使用java.io.File。   如果不使用Applet,则无法访问客户端的文件系统,   Flash,ActiveX或用户授予的其他组件   权限。

您应该转到有关JRE Emulation Reference

的Google文档

根据文件:

  

Google Web Toolkit包含一个模拟Java运行时库子集的库。下面的列表显示了GWT可以自动转换的JRE包,类型和方法的集合。请注意,在某些情况下,给定类型仅支持一部分方法。


但是,您可以使用gwt-filesystem项目:

  

该库为基于HTML5 FileSystem规范的使用Google Web Toolkit(GWT)开发的应用程序添加了基于浏览器的FileSystem支持。

答案 1 :(得分:0)

    // Works fine with GWT 2.6.1 and appengine sdk 1.9.13 deployed to App Engine
    StringBuilder sb = new StringBuilder();
    java.io.File folder = new File(".");
    java.io.File[] listOfFiles = folder.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
       sb.append(listOfFiles[i].getName() +"\n");
    }
    return sb.toString();

listOfFiles [i] .isFile())会抛出java.security.AccessControlException,但上面的工作正常。默认情况下,它在我的战争中返回文件和文件夹名称的最高级别,例如,_ah WEB-INF home.html favicon.ico testfile.txt home.css home