выходной HTML-код Java в файл - PullRequest
0 голосов
/ 23 июня 2011

У меня есть кусок HTML-кода, который должен быть выведен в виде файла .html, в Java.Предварительно написанный HTML-код - это заголовок и таблица для страницы, и мне нужно сгенерировать некоторые данные и вывести их в тот же HTML-файл.Есть ли более простой способ напечатать html-код, чем сделать prinln () построчно?Спасибо

Ответы [ 5 ]

0 голосов
/ 10 августа 2014

Чтобы создать простой текстовый файл HTML, вам не нужно читать входной файл построчно.

  File theFile = new File("file.html");
  byte[] content = new byte[(int) theFile.length()];

Вы можете использовать « RandomAccessFile.readFully » для чтенияфайлы целиком в виде байтового массива:

  // Read file function:
  RandomAccessFile file = null;
  try {
    file = new RandomAccessFile(theFile, "r");
    file.readFully(content);
  } finally {
    if(file != null) {
      file.close();
    }
  }

Внесите изменения в текстовое содержимое:

  String text = new String(content);
  text = text.replace("<!-- placeholder -->", "generated data");
  content = text.getBytes();

Запись также проста:

  // Write file content:
  RandomAccessFile file = null;
  try {
    file = new RandomAccessFile(theFile, "rw");
    file.write(content);
  } finally {
    if(file != null) {
      file.close();
    }
  }
0 голосов
/ 24 июня 2011

HTML - это просто способ разметки текста, поэтому для написания HTML-файла вы просто записываете HTML как текст в файл с расширением .html.

Существует множество учебных пособий длячтение и запись из файлов, а также получение списка файлов из каталога.(Google 'java read file', 'java write file', 'java list directory' - это в основном все, что вам нужно.) Важным моментом является использование BufferedReader / BufferedWriter для вытягивания и проталкивания текста в файлы и реализациичто при написании HTML-файла не существует какой-либо особой кодовой науки.

Я еще раз повторю;HTML - это не более чем <b>text with tags</b>.

Вот очень грубый пример, который выводит два файла в один файл, заключая их в тег <html></html>.

BufferedReader getReaderForFile(filename) {
    FileInputStream in = new FileInputStream(filename);
    return new BufferedReader(new InputStreamReader(in));
}

public void main(String[] args) {
    // Open a file
    BufferedReader myheader = getReaderForFile("myheader.txt");
    BufferedReader contents = getReaderForFile("contentfile.txt");

    FileWriter fstream = new FileWriter("mypage.html");
    BufferedWriter out = new BufferedWriter(fstream);

    out.write("<html>");
    out.newLine();

    for (String line = myheader.readLine(); line!=null; line = myheader.readLine()) {
        out.write(line);
        out.newLine(); // readLine() strips 'carriage return' characters
    }

    for (String line = contents.readLine(); line!=null; line = contents.readLine()) {
        out.write(line);
        out.newLine(); // readLine() strips 'carriage return' characters
    }

    out.write("</html>");
}
0 голосов
/ 23 июня 2011

Попробуйте использовать шаблонизатор, например, MVEL2 или FreeMarker . Оба могут использоваться автономными приложениями вне веб-фреймворка. Вы теряете время заранее, но это сэкономит вам время.

0 голосов
/ 23 июня 2011

JSP (Java Server Pages) позволяет писать HTML-файлы, в которые легко встроен некоторый код Java.Например,

<html><head><title>Hi!</title></head><body>
<% some java code here that outputs some stuff %>
</body></html>

Хотя для этого требуется, чтобы у вас был установлен корпоративный Java-сервер.Но если это на веб-сервере, это может быть неоправданно иметь.

Если вы хотите сделать это в обычном Java, это зависит.Я не совсем понимаю, какую часть вы имели в виду, вы будете выводить построчно.Вы имели в виду, что собираетесь сделать что-то вроде

System.out.println("<html>");
System.out.println("<head><title>Hi!</title></head>");
System.out.println("<body>");
// etc

Как это?Если ты это имел ввиду, то не делай этого.Вы можете просто прочитать данные из файла шаблона и вывести все данные сразу.Вы можете прочитать его в многострочную текстовую строку, можете прочитать данные из шаблона и вывести их непосредственно в новый файл.Что-то вроде

while( (strInput = templateFileReader.readLine()) != null)
    newFileOutput.println(strInput);

Опять же, я не совсем уверен, что вы подразумеваете под этой частью.

0 голосов
/ 23 июня 2011

Вы можете посмотреть на некоторые библиотеки Java для анализа HTML-кода.Быстрый поиск Google настраивает несколько.Прочитайте HTML, а затем используйте их запросы для манипулирования DOM по мере необходимости, а затем выплюните его обратно.например, http://jsoup.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...