У меня есть файл, который я копирую в какое-то место. Ниже приведен фрагмент кода -Убедитесь, что файл успешно скопирован
//Document Status = Pending
var triggerFileWriter = new StringWriter();
triggerFileWriter.WriteLine("Only for test");
System.IO.File.WriteAllText(fullTriggerFilename, triggerFileWriter.ToString());
triggerFileWriter.Dispose();
if (System.IO.File.Exists(fullTriggerFilename))
{
// Document Status = Processed
}
ли File.Exists
проверка достаточно, чтобы обновить статус документа?
Я не беспокоюсь, если файл не скопирован и статус документа не обновлен. Поскольку работа с таймером выполняется каждые 10 минут, элементы «Ожидание» будут автоматически отобраны в следующем прогоне.
Есть ли возможность прерывания копирования файлов - что может привести к файлу, но не полностью скопировано? Какие изменения я могу внести в свой код, если это произойдет.
Спасибо!
Существует * кэш записи *, поэтому вам необходимо [flush] (http://stackoverflow.com/q/383324/1997232), чтобы обеспечить его безопасность. Кроме того, что вы не получаете исключений во время 'WriteAllText', конечно. – Sinatr
@Sinatr 'Flush' не ждет, пока жесткий диск физически сохранит данные (больше). В современных системах просто нет способа убедиться, если у вас нет возможности проверить целостность файла - или полагаться на файловые системы, которые позволяют создавать атомарные файлы (например, NTFS). Что еще более важно, это не решает проблему OP - ему не нужно гарантировать, что файл правильно написан, ему просто нужно знать, должен ли файл, который он сейчас обрабатывает, обрабатывать или не нужно обрабатывать. – Luaan
@ Luaan, вы проверили связанный вопрос в моем комментарии? – Sinatr