Ответ 1
Вы не можете, IOException
может произойти в любое время. Если вы думаете об этом, IOException
может быть вызвано сбой программного обеспечения или аппаратного обеспечения в любое время, прежде чем первый байт был написан, ведь все было написано, но что-то случилось с соединением - или посередине, если блок данных был довольно большой.
После повторного подключения вы должны проверить размер файла или использовать какую-либо другую технику, чтобы поддерживать согласованное состояние файлов и восстанавливать их. Простейшая защитная сетка: прочитайте размер файла перед записью данных и надежно сохраните их, напишите данные и прочитайте размер файла после записи. Если ошибка возникает, а текущий размер файла не равен ожидаемому размеру файла (последний сохранен), обрезайте лишние байты и повторите попытку.
Ознакомьтесь с журналами транзакций в реляционных базах данных, чтобы узнать, как большое и надежное программное обеспечение обрабатывает такие случаи.