Перечислите файлы в каталоге с помощью GWT

#file #gwt #file-io #filesystems

#файл #gwt #file-io #файловые системы

Вопрос:

Я попробовал следующий код,

 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

Ответ №1:

Краткий ответ

Вы не можете использовать Java.io.File класс в GWT.

За исключением случаев, когда вы используете gwt-filesystem

«Большой» ответ

Из групп :

Вы не сможете использовать java.io .Файл на клиенте. Вы не можете получить доступ к файловой системе клиента без использования апплета, Flash, ActiveX или другого компонента, на который пользователь предоставил разрешение.

Вы должны перейти к документации Google о ссылке на эмуляцию JRE.

Согласно документации :

Google Web Toolkit включает библиотеку, которая эмулирует подмножество библиотеки Java runtime library. В приведенном ниже списке показан набор пакетов JRE, типов и методов, которые GWT может автоматически переводить. Обратите внимание, что в некоторых случаях для данного типа поддерживается только подмножество методов.


Однако вы можете использовать проект gwt-filesystem :

Эта библиотека добавляет поддержку файловой системы на основе браузера к приложениям, разработанным с использованием Google Web Toolkit (GWT), на основе спецификации файловой системы HTML5.

Комментарии:

1. Сандро Мунда, спасибо. Но я не могу получить зависимость от gwt-файловой системы (т. Е. файла jar). Можете ли вы указать мне веб-сайт, где я могу загрузить файл jar? Заранее спасибо, Gnik

2. 1) Возьмите zip: github.com/bradrydzewski/gwt-filesystem/zipball/master 2) разархивируйте и создайте mvn-пакет, чтобы получить файл .jar.

3. Сандро, спасибо. Я получил файл jar. Большое вам спасибо. Gnik

4. Сандро, я попытался перечислить файлы в моем локальном каталоге. Но не смог этого сделать. Можете ли вы дать мне пример кода для получения списка файлов в каталоге с использованием gwt-filesystem. Заранее спасибо, Gnik

5. Сандро, можешь ли ты дать мне пример кода для получения списка файлов в каталоге с использованием gwt-filesystem. Заранее спасибо, Gnik

Ответ №2:

     // 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 значок.ico testfile.txt home.css главная