【发布时间】:2015-01-19 17:42:43
【问题描述】:
我正在创建一个通过 .edu 域进行爬网的网络爬虫。目前,我的程序从命令行读取一个种子文件,其中包含许多 .edu 的 url 和其他参数。当我从文件中读取每个 url 时,我将 url 传递给下载页面内容的不同函数。当我只传入一个网址时,一切正常。但是,当我发送多个文件时,我的程序在打开 URL 内容的输入流后卡住了。
这两个参数来自我的函数(readFromSeedFile),它只打开seed.txt,逐行读取url,然后调用downloadFile。
public static void downloadFile(String seed, int i) throws IOException, MalformedURLException{
System.out.println("In downloadFile");
URL urlObj = new URL(seed);
System.out.println("1");
BufferedReader x = new BufferedReader(new InputStreamReader(urlObj.openConnection().getInputStream()));
System.out.println("2");
String fileName = "file" + i + ".html";
System.out.println("3");
BufferedWriter fos = new BufferedWriter(new FileWriter(fileName));
System.out.println("4");
while(x.ready()){
System.out.println("while loop of downloadFile");
String line = x.readLine();
fos.write(line);
fos.write("\n");
}
x.close();
fos.close();
}
它会抛出我在 ReadFromSeedFile 中的 IO 异常。 这是我收到的错误消息
S$ javac WebCrawler.java
S$ java WebCrawler seed.txt 3 4 out.txt
while loop of readSeedFile
http://cs.ucr.edu/
In downloadFile
1
Exception occurred trying to read 'seed.txt'.
BufferedReader 有什么我不理解的地方吗?
【问题讨论】:
-
使用
try/catch捕获异常。然后,打印异常(例如使用printStackTrace())并告诉我们异常的详细信息。 -
注意
System.out默认是缓冲的,所以一般不使用它来调试。相反,请使用System.err,或者更好的是使用记录器
标签: java url web-crawler bufferedreader