Восстановление после исключения IOException: сетевое имя больше не доступно

Я пытаюсь прочитать большой (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();
        }
    }
}

Спасибо за ваше время.

5
задан Shiro 8 November 2011 в 21:17
поделиться