Почему я могу удалить открытые файлы изображений в .NET, используя FileInfo? - PullRequest
4 голосов
/ 08 июня 2009

У меня есть небольшая утилита, которая удаляет файлы из папок с помощью метода .NET FileInfo.Delete (). По сути, я могу поймать IOException, если файл в данный момент открыт. Это работает для всех файлов, кроме файлов изображений (JPG, GIF, BMP и т. Д.). Когда эти типы файлов открыты, программа все равно может удалить их без каких-либо исключений. Сталкивались ли вы с этим раньше? Как бы обнаружить, что эти типы файлов открыты, чтобы я мог предотвратить удаление.

Спасибо, Минь

Ответы [ 2 ]

8 голосов
/ 08 июня 2009

Возможность удаления файла при его открытии зависит больше от программы, в которой файл открыт, чем от типа файла. Например, если приложение просто считывает содержимое файла, а затем закрывает файл (например, «Блокнот»), вы сможете удалить файл, пока он «открыт» (это означает, что он отображается в блокноте). Excel, с другой стороны, сохраняет файл открытым таким образом, что вы обычно даже не можете его скопировать.

1 голос
/ 08 июня 2009

Используйте такой инструмент, как WhoLockMe или Unlocker, чтобы узнать, действительно ли файл «открыт». Как уже говорили другие, это не имеет ничего общего с типом файла, просто то, как программа, читающая его, открывает файл.

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