File.Delete не выдает ошибку, когда файл не существует - PullRequest
5 голосов
/ 27 марта 2012

Странная проблема возникает на производственной платформе (64-битный сервер Win 2008). Это связано с File.Exists и File.Delete методами ...

На тестовой платформе в отладке (win xp) и т. Д. Она работает нормально. На сервере 2008 впервые несколько раз
File.Exists сообщил true для файла, который не существует ...

Когда я проводил дальнейшие тесты, File.Exists наконец сообщил о ложном для файла, которого не было.
Но File.Delete не выдал ошибку при попытке удалить файл, который не существует ...

Что происходит ...?

Я где-то читал, что виртуализация системы может испортить ситуацию ... но не нашел ни одного файла в: %userprofile%\AppData\Local\VirtualStore

1 Ответ

27 голосов
/ 27 марта 2012

File.Delete on MSDN :

public static void Delete(string path)

Если удаляемый файл не существует, исключение не выдается.

Итак.это умышленно .... нет true \ false и никаких исключений, просто удалите файл, если он существует.

Примечание о File.Exist:

public static bool Exists(string path)

Возвращаемое значение Тип: System.Boolean

true , если вызывающая сторона имеет необходимые разрешения, а путь содержит имя существующего файла;в противном случае false .Этот метод также возвращает false , если путь имеет значение Nothing, неверный путь или строка нулевой длины.Если у вызывающей стороны недостаточно прав для чтения указанного файла, исключение не выдается, и метод возвращает значение false независимо от наличия пути.

MSDN

...