gpt4 book ai didi

java - 从 IOException : network name no longer available 中恢复

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:13 25 4
gpt4 key购买 nike

我正在尝试读取一个大 (700GB) 文件并逐步处理它,但我正在使用的网络偶尔会出现故障,从而切断对文件的访问。这抛出一个 java.io.IOException 告诉我“指定的网络名称不再可用”。有没有一种方法可以捕捉到这个异常并等待,比如说,十五分钟,然后重试读取,或者一旦失去对文件的访问权限,Reader 对象是否被炸毁?

如果连接断开后 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();
}
}
}

感谢您的宝贵时间。

最佳答案

您可以跟踪变量中读取的字节。例如,这里我在一个名为 read 的变量中进行跟踪,而 buff 是 char[]。不确定是否可以使用 readLine 方法。

read+=br.read(buff);

然后如果需要重启,可以跳过那么多字节

br.skip(read);

然后你就可以继续处理了。祝你好运

关于java - 从 IOException : network name no longer available 中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com