2011-08-31 73 views
0

我有一个程序来拉取网页的源代码并将其保存到.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_querywhile(fetch_assoc)抓斗从数据库的URL,然后运行system("java -jar crawl.jar $url $filename");

然后,fopenfread新文件,最后将源码保存到数据库(在escaping_strings等之后)。

回答

2

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

+0

哇,不敢相信我错过了。谢谢! – Calvin

0

您必须刷新流并关闭它。

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