2015-11-10 1 views
0

У меня проблема с загрузкой файла в моем java-апплете. В принципе, в моем классе Pixel2 я создаю экземпляр другого класса Stack, который принимает имя файла в качестве аргумента и загружает этот файл (здесь я пытаюсь track.txt) У меня есть файл «track.txt» в корне моей проецироватьFileNotFoundException Java Applet

image1

, но когда я пытаюсь запустить мой апплет, я получаю исключение filenotfound.

enter image description here

Странная вещь, что если я запустить экземпляр класса Stack в тестовом классе, файл загружается правильно!

Я действительно смущен, есть ли особый способ обработки загрузки файла в апплете? Должны ли файлы быть помещены в конкретный репозиторий, чтобы быть обнаруженными методами внутри области апплета?

Спасибо за ваши ответы!

+0

Апплеты работают в песочнице: https://docs.oracle.com/javase/tutorial/deployment/applet/security.html On сторонние заметки, такие браузеры, как [хром, отбрасывают апплетую поддержку] (https://www.quora.com/How-will-Java-be-supported-in-Chrome-after-Chrome-drops-the-NPAPI-support) - лучшее использование подход HTML5 или, если вам нужна клиентская Java, посмотрите [webstart] (https://blogs.oracle.com/java-platform-group/entry/java_web_start_in_or) –

ответ

1

Апплет имеет диспетчера безопасности, который ограничивает доступ к файловой системе.

Здесь вы можете получить доступ к файлу внутри приложения. Приложение может быть упаковано в банку, и, следовательно, «файл» должен быть заархивирован, только для чтения, нужно разархивировать. Для этого java использует концепцию ресурс. Ресурс таких как `Lumi/track.txt» имеет чувствительный тематический путь с косыми чертами

Изменения использования в стеке, чтобы с помощью InputStream, как:.

public Stack(String resourcePath) { 
    InputStream in = Stack.class.getResourceAsStream(resourcePath); 
    try (BufferedReader reader = new BufferedReader(
      new InputStreamReader(in, StandardCharset.UTF_8))) { 
     String line; 
     while ((line = reader.readLine()) != null) { 
      ... 
     } 
    } 
} 

Ошибки в том, что файл будет получить доступ к локальная файловая система, а относительный путь - не в src/Lumi /.

+0

Большое спасибо Joop! Я просто изменяю путь от track.txt к Lumi/track.txt, и это сработало :) – Marc

 Смежные вопросы

  • Нет связанных вопросов^_^