使用jsoup将控制台输出写入文本文件

时间:2013-12-03 16:09:47

标签: java

我想将控制台输出写入文本文件但不知何故它只将一行写入我的文本文件。我是Java新手。我不理解代码中的p,所以请帮助我。

这是我的代码:

package htmlparser;
import java.io.IOException;
import java.util.logging.*;    
import org.jsoup.*;
import org.jsoup.nodes.*;
import org.jsoup.select.*;    
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.File;
import java.io.*;

public class Htmlparser {

  public static void main(String[] args)  {
    try {
      String url = "http://cell-phone-providers-review.toptenreviews.com/cingular-review.html";
      Document doc = Jsoup.connect(url).get();
      Elements paragraphs = doc.select("p");
      for(Element p : paragraphs)
        System.out.println(p.text());

      PrintWriter out = new PrintWriter(new FileWriter("C:/Users/Desktop/outputtext.txt")); 
      out.print(System.in); 
      out.close();          
    } 
    catch (IOException ex) {
      Logger.getLogger(Htmlparser.class.getName())
            .log(Level.SEVERE, null, ex);
    }
  }
}

2 个答案:

答案 0 :(得分:0)

您正在for循环中打开文件,因此每次都会覆盖最新的行,因为文件被覆盖。在for循环之外打开文件,然后在循环之后关闭它。

public static void main(String[] args) {
    try {
        String url = "http://cell-phone-providers-review.toptenreviews.com/cingular-review.html";
        Document doc = Jsoup.connect(url).get();
        Elements paragraphs = doc.select("p");
        PrintWriter out = new PrintWriter(new FileWriter("C:/Users/Desktop/outputtext.txt")); 
        for(Element p : paragraphs) {
            out.print(p.text());
        }
        out.close();          
    } catch (IOException ex) {
        Logger.getLogger(Htmlparser.class.getName()).log(Level.SEVERE, null, ex);
    }
}

答案 1 :(得分:0)

循环周围没有任何大括号,因此该语句是循环中唯一调用的语句

System.out.println(p.text());

在进入循环之前创建PrintWriter 并使用out.print(System.in)将控制台输出写入文件。