Я пытаюсь прочитать большой (700 ГБ) файл и постепенно обработать его, но сеть, над которой я работаю, иногда выходит из строя, перекрывая доступ к файл. Это вызывает исключение java.io.IOException, сообщающее мне, что «указанное сетевое имя больше не доступно». Есть ли способ, которым я могу поймать это исключение и подождать, скажем, пятнадцать минут, а затем повторить попытку чтения, или объект Reader поджаривается после потери доступа к файлу?
Если Reader становится бесполезным после того, как соединение потеряно, есть ли способ переписать это таким образом, чтобы позволить мне «сохранить свое место», а затем начать чтение оттуда без необходимости читать и отбрасывать все данные до него? Даже простое пережевывание данных без обработки занимает много времени, когда их нужно обработать 500 ГБ.
В настоящее время код выглядит примерно так (отредактировано для краткости):
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();
}
}
}
Спасибо за ваше время.