【发布时间】:2011-12-24 19:27:18
【问题描述】:
我正在尝试读取一个大 (700GB) 文件并逐步处理它,但我正在处理的网络偶尔会出现故障,从而切断对文件的访问。这会引发 java.io.IOException 告诉我“指定的网络名称不再可用”。有没有一种方法可以捕获此异常并等待,例如,十五分钟,然后重试读取,或者一旦失去对文件的访问权限,Reader 对象是否会被炸掉?
如果一旦连接丢失,阅读器就变得无用,有没有办法可以重写它,让我“保存我的位置”,然后从那里开始阅读,而无需阅读和丢弃之前的所有数据吗?即使只是咀嚼数据而不进行处理,也需要很长时间才能通过 500GB 的数据。
目前,代码看起来像这样(为简洁而编辑):
class Processor {
BufferedReader br;
Processor(String fname) {
br = new BufferedReader(new FileReader("fname"));
}
void process() {
try {
String line;
while((line=br.readLine)!=null) {
...code for processing the line goes here...
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
感谢您的宝贵时间。
【问题讨论】:
-
他一定是黑了索尼的人...... 700GB 天哪......
标签: java file-io exception-handling io ioexception