2009-08-31 1 views
1

Я пишу какой-то инструмент резервного копирования, который должен скопировать все файлы в каталог. Теперь я использую метод C# File.Copy(String, String, Boolean). Но другое приложение (которое я не могу изменить) одновременно записывает в файлы в этом каталоге.Скопируйте изменяющийся файл с File.Copy

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

Thanks

ответ

3

Нет, это не так. Базовая файловая система будет убедиться, что этого не происходит.

+0

У кого-нибудь есть источник в Интернете, который подтверждает и объясняет это далее? Я попытался сделать это самостоятельно, но не смог найти ничего приличного. –

+1

Вы действительно испытываете описанную проблему? Вот достойное описание: http://en.wikipedia.org/wiki/File_locking#In_Microsoft_Windows Я бы сказал, это зависит от того, как вы открыли файл. Бьюсь об заклад, что FileInfo.CopyTo должен работать более чем хорошо для вас. – Rashack

+0

Нет, я не испытал описанную проблему. Но инструмент резервного копирования будет очень интенсивно использоваться в производственной среде, поэтому я очень осторожен. У меня нет контроля над тем, как другие приложения открывают файлы, которые я поддерживаю. И я заметил, что метод File.Copy также работает, когда другое приложение имеет блокировку записи в файле (но не блокировку чтения). Поэтому я опасался, что он может сделать копию на полпути с изменением файла, таким образом развращая файл. Мне было бы легче, если бы я мог найти источник, подтверждающий, что этого не может быть. –