为什么我的程序只得到网页源的一部分


Why does my program only gets part of web page source?

我有一个程序来拉一个网页的源代码,并将其保存到一个。txt文件。如果一次只处理一个,它就可以工作,但是当我经过一个循环,比如说100页时,突然每个页面的源开始在1/4到3/4之间被切断(似乎是任意的)。你们知道我为什么要解决这个问题吗?

最初的想法是循环对java来说太快了(我从php脚本运行这个java),但后来认为它在技术上不应该去下一个项目,直到当前的条件完成。

下面是我使用的代码:
import java.io.*;
import java.net.URL;
public class selectout {
public static BufferedReader read(String url) throws Exception{
    return new BufferedReader(
        new InputStreamReader(
            new URL(url).openStream()));}
public static void main (String[] args) throws Exception{
    BufferedReader reader = read(args[0]);
    String line = reader.readLine();
    String thenum = args[1];
    FileWriter fstream = new FileWriter(thenum+".txt");
    BufferedWriter out = new BufferedWriter(fstream);
    while (line != null) {
          out.write(line);
          out.newLine();
        //System.out.println(line);
        line = reader.readLine(); }}
}

PHP是一个基本的mysql_query while(fetch_assoc)从数据库中抓取url,然后运行system("java -jar crawl.jar $url $filename");

然后,fopenfread将新文件保存,最后保存到数据库(escaping_strings等)

您需要在完成每个文件的写入后关闭输出流。while循环之后,调用out.close();和fstream.close ();

必须刷新流并关闭它。

finally{  //Error handling ignored in my example
    fstream.flush();  
    fstream.close();  
}