Как получить список файлов в Java-апплете? - PullRequest
1 голос
/ 10 января 2012

Я работаю над совместным проектом на Java, и подумал, что было бы проще встроить его в веб-страницу в виде апплета, и тогда каждый может добавлять свои дочерние классы (бонусы, враги и т. Д.) По мере их создания. в соответствующие папки. И чтобы это работало, я хотел, чтобы апплет проверял папки на веб-сайте, собирал имена файлов в каждой папке, а затем помещал эти имена классов в массив, поскольку каждый из них был бы сгенерирован случайным образом из этого.

Первоначально я пытался создать объект File и вызывать .listFiles (), чтобы получить его в массив, но объект file не распознает указанный мной путь, getCodeBase().toString()+"bonus.txt", поэтому я попытался просто указать имена всех классы, которые будут находиться в папке в файле .txt, открывать файл и просто читать каждую строку. Это будет работать в Eclipse, но когда я загрузил файлы .class и .txt на сайт, я получил ошибку прав доступа, поэтому я поместил класс в .jar, сам подписал его и загрузил снова, но апплет не работал это просто замерзло.
Каждый раз, когда у меня не было оператора извлечения файла, в или из .jar, апплет работал бы нормально, но если бы у меня были эти строки кода, он зависал или выдавал ошибку.

Я пробовал new scanner(new file("bonus.txt")); Различные варианты буферизованных читателей находили в Google похожие проблемы, а также разные способы загрузки адреса через класс File, но ни один из них не работал.

Все, что я пытался заставить апплет сделать это, - это просто загрузить файл .txt (в том же каталоге, что и файл .class), прочитать содержимое и распечатать его в апплете, но безуспешно. Очень признателен, если вы укажете мне правильное направление.

1 Ответ

3 голосов
/ 10 января 2012

A File, установленный (доверенным) апплетом, будет указывать на местоположение в файловой системе компьютера конечного пользователя (которое, вероятно, не будет существовать).File объекты не могут никогда указывать на сервер, это не то, как они работают.

Чтобы получить доступ к ресурсам из апплета, вы обычно используете вместо этого URL.EG

URL urlToList = new URL(getCodeBase(), "bonus.txt");
Scanner scanner = new Scanner(urlToList.openStream());

Обратите внимание, что ни одна из этих строк не потребует подписи / доверия апплета.

...