Jsoup Java переписывает строку файла, которую он должен добавить - PullRequest
0 голосов
/ 07 мая 2019

код, который должен прочитать html-файл и записать результат в другой файл, буферизатор пишет файл, но при запуске кода с другим urlit не добавляется, а переписывает файл, а предыдущее содержимое исчезает

решение исправлено так: когда jsoup повторяет новый html, результат должен добавляться в выходной файл, а не переписывать

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

public class WriteFile 
{
    public static void main(String args[]) throws IOException
  { 
    String url = "http://www.someurl.com/registers";
    Document doc = Jsoup.connect(url).get();
    Elements es = doc.getElementsByClass("a_code");     

    for (Element clas : es) 
    {                    
      System.out.println(clas.text()); 
      BufferedWriter writer = new BufferedWriter(new FileWriter("D://Author.html"));
      writer.append(clas.text());
      writer.close();
    } 
  }    
}

1 Ответ

1 голос
/ 07 мая 2019

Не путайте append -метод BufferedWriter как добавление содержимого в файл. Это действительно добавляет к данному автору.

Чтобы действительно добавить дополнительный контент в файл, вам необходимо указать это при открытии файла записи. FileWriter имеет дополнительный параметр конструктора, позволяющий указать, что:

new FileWriter("D://Author.html", /* append = */ true)

Возможно, вас даже заинтересует API файлов Java , так что вы можете сэкономить на мгновенном создании собственного BufferedWriter и т. Д.: * 10101 *

Files.write(Paths.get("D://Author.html"), clas.text().getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND);

Ваш цикл и то, что вы пишете, могут в дальнейшем упроститься до чего-то следующего (вы можете даже опустить опцию APPEND -open снова, если это имеет смысл):

Files.write(Paths.get("D://Author.html"), 
            String.join("" /* or new line? */, 
                        doc.getElementsByClass("a_code")
                           .eachText()
                       ).getBytes(), 
            StandardOpenOption.CREATE, StandardOpenOption.APPEND);
...