Здравствуйте, Fortnum, Вы писали:
F>Надо заблокировать файл C:\MyPath\MyFile.xxx, чтобы никто не мог его открыть ни на чтение, ни на запись. Затем скопировать его во временный файл — какой-нибудь там C:\Temp\AnyName.yyy, после чего внести в этот временный файл кое-какие изменения, и если изменения внесены были успешно, скопировать его назад с overwrite`ом, после чего исходный файл (с внесенными изменениями) разблокировать для общего доступа, а временный файл удалить. Если изменения внести не удается, временный файл удаляется, а исходный разблокируется. Как это сделать?
F>Пояснения, что я пытаюсь сделать:
F>F>string sourcePath = "C:\MyPath\MyFile.xxx";
F>string destPath = Path.GetTempFileName();
F>FileStream origDb = File.Open(sourcePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
F>File.Copy(sourcePath, destPath, true);
F>...
F>
F>На File.Copy вылетает exception, причем странного какого-то типа — такое впечатление, что я временный файл залочил, хотя на самом деле я залочил исходный файл::
F>F>System.IO.IOException: The process cannot access the file "C:\DOCUME~1\9335~1\LOCALS~1\Temp\tmp3.tmp" because it is being used by another process.
F>Если первую строчку File.Open( ... ) закоментировать — все ОК получается, но во время изменений временного файла, кто-то может что-то дописать в оригинальный — так не пойдет.
поставь строчку с копией ниже Open.