Как мне прочитать все содержимое файла HTML внутри моего фляги и сохранить его в строке - PullRequest
0 голосов
/ 24 июня 2018

У меня есть HTML-файл в каталоге моего JAR-файла в pages / newTab.html, а в Eclipse он, очевидно, находится в res / pages / newTab.html. Моя цель здесь - прочитать содержимое всего HTML-файла и сохранить его в виде строки.

Я пробовал несколько способов получить файл как ресурс, а затем прочитать его с помощью BufferedReader, он работает в Eclipse, но не в Runnable JAR. Обычно я получаю файл как ресурс, это работает в Eclipse, но не в Runnable JAR.

getClass().getResource("/pages/" + url.substring(7))

Вот что у меня есть.

File file = new File(getClass().getResource("/pages/" + url.substring(7)).toURI());
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer = new StringBuffer();
String line;

while ((line = bufferedReader.readLine()) != null) {
    stringBuffer.append(line);
    stringBuffer.append("\n");
}
fileReader.close();

jep.setContentType("text/html");
jep.setText(stringBuffer.toString());

jep - это JEditorPane, на который мы печатаем текст.

EDIT: я получаю java.lang.IllegalArgumentException: URI is not hierarchical при запуске Runnable JAR с File file = new File(getClass().getResource("/pages/" + url.substring(7)).toURI());

1 Ответ

0 голосов
/ 24 июня 2018

Сохраните html вне фляги, это то, что вы можете делать с файлами конфигурации и другими подобными вещами.Создайте папку для приложения и сохраните исполняемый файл jar и html внутри.

  - application\ 
  ------- executable.jar
  ------- htmlFile.html

Теперь сделайте что-то вроде этого:

    try {
        List<String> lines = new ArrayList<>(Files.readAllLines(Paths.get("htmlFile.html"))));
        String content = "";
        for (String line : lines) {
              content += line + "\n";
        }
        jep.setContentType("text/html");
        jep.setText(content);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
...