2010-01-07 3 views
1

У меня есть 10 файлов. Я хочу удалить их, но условие здесь как я удаляю файл 1 в файл 5. Скажем, в файле6 я получил исключение, тогда в этом случае я должен восстановить все удаленные файлыПроблема при удалении, когда у нас есть более 1 файла

Я должен удалить файлы, только если в любом из файлов не происходит исключения, когда мы пытаемся удалить

что-то вроде отката транзакции, что мы делаем в БД. есть ли какое-либо свойство в файле мы можем achive этой концепции

anyhelp были бы здоровым спасибо

ответ

0

Вы можете посмотреть на транзакционных NTFS, который делает то, что вы хотите. Я не пробовал сам, но вот ссылка, чтобы использовать его в .net

http://code.msdn.microsoft.com/txfmanaged

2

Вы можете сделать это в два этапа. Сначала переименуйте все файлы (или более). Затем, как только вы будете рады, что все файлы будут удалены, вы можете пойти и действительно удалить их. Если нет, вы переименуете их обратно (или переместите их обратно) в исходное состояние.

Фактическое удаление может происходить как пакетное задание.

+0

Единственная проблема с этим - вы можете переименовать файл, который используется. Если бы вы сделали это, то он все равно не смог бы удалить файл, когда вы пришли на второй проход. –

+0

Правда. В этом случае вы можете либо перенести их перед удалением, либо использовать копии файлов, чтобы удалить оригиналы, откат с использованием копий, если это необходимо, и удалить копии, если все будет хорошо. Если вы добавите эту функцию, то вы в значительной степени сможете найти функцию «отмены» для ситуаций, когда эти файлы удаляются по ошибке. –

1

Если транзакционная NTFS не подходит для вас, вы можете пройти маршрут копирования всех файлов в временное место перед удалением ... затем поймать любые исключения. Если есть исключения, проверьте, существует ли каждый файл, и если не просто скопируйте обратно те, которые отсутствуют в временном расположении.

Если файлы не слишком велики, вы также можете рассмотреть возможность хранения файлов в реляционной базе данных, где вы получаете такую ​​поддержку транзакций и многое другое.

Смежные вопросы