Как удалить файл только для чтения?

У меня есть каталог мусора, в котором я загружаю загрузки, одноразовые проекты, черновики и другие различные вещи, которые могут быть полезны в течение нескольких дней, но их не нужно сохранять навсегда. Чтобы эта директория не перехватила мой компьютер, я написал программу, которая удалит все файлы старше указанного количества дней и зарегистрирует некоторую статистику о количестве удаленных файлов и их размере только для удовольствия.

Я заметил, что несколько папок проекта живут намного дольше, чем нужно, поэтому я начал исследовать. В частности, казалось, что папки для проектов, в которых я использовал SVN, торчали вокруг. Оказывается, что файлы только для чтения в каталогах .svn не удаляются. Я просто сделал простой тест в файле только для чтения и обнаружил, что System.IO.File.Delete и System.IO.FileInfo.Delete не будут удалять файл только для чтения.

Мне не нужно защищать файлы в этом конкретном каталоге; если что-то важное в нем находится в неправильном месте. Есть ли класс .NET, который может удалять файлы только для чтения, или мне придется проверять атрибуты только для чтения и стирать их?

Ответ 1

Добавление примерного кода в ответ Тима:

using System.IO;

File.SetAttributes(filePath, FileAttributes.Normal);
File.Delete(filePath);

Ответ 3

Эквивалент, если вы работаете с объектом FileInfo:

file.IsReadOnly = false;
file.Delete();

Ответ 4

Зачем вам нужно проверять? Просто принудительно очистите флаг только для чтения и удалите файл.

Ответ 5

Мне кажется, я предпочел бы поставить

>del /F *

в запланированную задачу. Может быть, завернут пакетным файлом для регистрации статистики.

Я что-то пропустил?