Апплет чтения файлов не работает в браузере - PullRequest
0 голосов
/ 30 декабря 2011

Моя программа апплета базы данных Java считывает файл из текущего каталога, например FileInputStream fstream = new FileInputStream("details.txt");

Когда я бегу через appletviewer, он работает, но через браузер, он не показывает никакого вывода. ошибка:

Error: details.txt (The system cannot find the file specified)

Я поместил этот файл в ту же директорию.

Мой тег апплета:

<applet code="hack.database.MyApplet.class" archive="MyApplet.jar, ojdbc14.jar" height="800" width="1000"> </applet>

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Естественно, вы не можете использовать FileInputStream для этого, FileInputStream для чтения файлов , и вы не можете получить доступ к локальной файловой системе в неподписанном апплете. Ваши ресурсы доступны через сеть, а не в виде файлов. Если ваш апплет подписан , код, который вы процитировали, будет искать файл "details.txt" в текущем каталоге рабочего пользователя в его файловой системе, а не обязательно в каталоге, содержащем файл класса.

Вы можете загрузить ресурсы из jar, в котором находится класс апплета, используя Class#getResource, чтобы получить URL, который вы можете открыть, или используя Class#getResourceAsStream, чтобы сделать это. все в одном. Так, например, этот код в методе экземпляра в апплете откроет InputStream для файла «details.txt» в том же каталоге в jar, что и файл апплета class:

InputStream is = getClass().getResourceAsStream("details.txt");

Я знаю, что это работает на ресурсы в банке. Работает ли это для других ресурсов в той же кодовой базе, я не могу сказать, я всегда собираю все в банку. См. Также этот связанный вопрос (и его ответы).

Итак, два шага: поместите файл в банку и используйте приведенный выше код для извлечения его содержимого.

1 голос
/ 30 декабря 2011

Вы должны использовать java.net.URL и java.net.URLConnection метод класса, чтобы получить InputStream.Неподписанные апплеты не могут получить доступ к клиентским ресурсам, таким как локальная файловая система.Для получения дополнительной информации читайте - Что могут и не могут делать апплеты .

...