UnauthorizedAccessException StreamWriter
У меня есть следующий код:
public WriteToFile(string path, List<string> text)
{
File.Delete(path);
using (TextWriter writer = new StreamWriter(path, true))
{
foreach(string t in text)
{
writer.WriteLine(text);
}
}
}
Большую часть времени он работает нормально, файл удаляется, а затем создается снова с текстом внутри. Однако очень часто using
заявление бросает UnauthorizedAccessException
, Есть идеи почему? У меня есть права администратора, и программа запускается от имени администратора.
1 ответ
Это нормально, это стало не диагностируемым, потому что вы использовали File.Delete(). Что не нужно, просто используйте конструктор StreamWriter(string).
Это идет не так, потому что удаление файла не гарантирует, что файл действительно будет удален. Это может быть открыто другим процессом. Который открыл файл с удаленным доступом, программы, такие как антивирусные сканеры и индексаторы файлов, обычно делают это. Что делает вызов Delete () успешным, но файл не исчезает, пока все дескрипторы файла не будут закрыты. Вы получили исключение UnauthorizedAccessException, поскольку файл еще не был удален.
Продвиньтесь, удалив вызов File.Delete(). Вы все еще должны предположить, что конструктор StreamReader() может завершиться ошибкой. Реже это должно произойти рано или поздно. Вы получите лучшее сообщение об исключении. Таковы капризы многозадачной операционной системы.