Re: Транзакция на несколько файлов
От: Shmj Ниоткуда  
Дата: 11.09.18 17:54
Оценка:
Здравствуйте, #John, Вы писали:

J>надо добавить информацию сначала в один файл, потом во второй,

J>если процесс оборвался перед записью во второй файл,
J>то изменения в первом файле должны откатиться, как такое можно реализовать?

Вам правильно порекомендовали выше заюзать ntfs-transaction или готовую СУБД вместо работы с файлами, где механизм транзакций поддерживается из коробки.

Но! В качестве разминки попробую предложить альтернативу. Итак:

1. К каждой записи добавляете проверку целостности (хеш). Т.е. считываете строку и можете проверить не оборвалась ли она на середине.

2. При запуске вашей проги проверяете конец файлов — корректные ли там данные (т.е. целостность). Если оборвалось — то урезает (Seek) до предыдущей записи. Проверять нужно и первый и второй файл.

3. Если сбой произошел штатно, т.е. завершение процесса не произошло (а, к примеру, файл был заблокирован другим процессом) — то это отлавливается исключениями.

Пока не вижу подводных камней, но к критике готов.
Отредактировано 11.09.2018 17:55 Shmj . Предыдущая версия . Еще …
Отредактировано 11.09.2018 17:54 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.