我有一个程序来提取网页的源代码并将其保存为.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)
从数据库中获取网址,然后运行system("java -jar crawl.jar $url $filename");
然后,它fopen
和fread
新文件,最后将源保存到数据库(在escaping_strings
等之后)。
答案 0 :(得分:2)
完成每个文件的编写后,需要关闭输出流。在while循环之后,调用out.close();和fstream.close();
答案 1 :(得分:0)
您必须清除流并关闭它。
finally{ //Error handling ignored in my example
fstream.flush();
fstream.close();
}