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

Java 使用jsoup将控制台输出写入文本文件,java,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.FileWrite

我想将控制台输出写入一个文本文件,但不知怎的,它只向我的文本文件写入一行。我是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);
    }
  }
}

您正在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);
    }
}

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

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

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

我试过圈外的打印机。仍然不是预期的结果。
print(System.in)
的输出应该是什么?@user3062229如上所述,在进入循环之前创建
PrintWriter
,然后在循环中使用
out.print(System.in)
,并记住添加
大括号
{}
元素段落=doc。选择(“p”);PrintWriter out=新的PrintWriter(新的文件编写器(“C:/Users/Chenfei/Desktop/outputtext.txt”);输出打印(系统输入);out.close();对于(元素p:段落)System.out.println(p.text());}这就是你的意思吗?我有点困惑,因为它仍然没有给我预期的输出。不工作。谢谢你。它只给出一行“java.io”。BufferedInputStream@2e15df3f“这是因为您正在将object System.in写入文件,而不是段落的文本。