java - Jsoup java重写它应该添加的文件字符串

标签 java jsoup

应该读取 html 文件并将结果写入另一个文件的代码,缓冲编写器会写入该文件,但当使用不同的 urllit 运行代码时,不会附加而是重写文件,并且先前的内容会消失

所需的解决方案是,当 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();
    } 
  }    
}

最佳答案

不要弄错append -BufferedWriter的方法将内容附加到文件中。它实际上附加到给定的作者。

要实际将附加内容附加到文件中,您需要在打开文件编写器时指定。 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);

关于java - Jsoup java重写它应该添加的文件字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56026055/

相关文章:

Java(Jsoup) : How to parse http://host:port

java - 亲子关系 hibernate

java - 如何创建可以修改的对象的副本?

java - jsoup 无法返回包含所有子节点的完整节点

java - jsoup 表获取特定元素

java - jsoup 从 html 文件中获取特定的 id

java - 如何将本地 html 文件加载到 Jsoup 中?

java - 网格着色游戏 : Find the number of red and blue lines drawn

Java:二叉搜索树

java - Maven 多模块项目结构