Атомность File.Move - PullRequest
       12

Атомность File.Move

19 голосов
/ 21 апреля 2009

Я хочу переименовать файл в каталоге как атомарную транзакцию. Файл не будет изменять каталоги. Путь указывается в виде UNC-пути к файловой системе NTFS, возможно, на сервере 03 или 08.

Является ли File.Move () атомарным для этих целей? Как, например, он либо завершается успешно, либо завершается неудачно, так что исходный файл все еще не поврежден?

Моя интуиция говорит да, но я хотел убедиться.

1 Ответ

21 голосов
/ 21 апреля 2009

Да, в NTFS. С здесь :

Кроме того, если вы работаете в NTFS, файловые операции являются атомарными на уровне файловой системы. Переименование будет происходить в одной операции, если речь идет о любом более высоком коде. Похоже, проблема, с которой вы сталкиваетесь, заключается в том, что объект FileInfo является общим для приложений. Это объект MarshalByRef, поэтому его можно использовать в удаленных средах. Не знаю, относится ли это к вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...