应读取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();
}
}
}
答案 0 :(得分:1)
不要将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);