Jsoup Java重写应添加的文件字符串

时间:2019-05-07 15:34:24

标签: java jsoup

应读取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 个答案:

答案 0 :(得分:1)

不要将appendBufferedWriter方法误认为是将内容附加到文件中。实际上,它会附加到给定的作者上。

要实际上将其他内容附加到文件,您需要在打开文件编写器时指定该内容。 FileWriter还有一个附加的构造函数参数,可用于指定以下内容:

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

您甚至可能对Java Files API感兴趣,因此可以省去实例化自己的BufferedWriter等。

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);