如何删除只读文件?

我有一个垃圾邮件目录,在那里我可以下载,一次性的项目,电子邮件草稿和其他几天可能有用的东西,但不需要永久保存。 为了阻止这个目录接pipe我的机器,我编写了一个程序,它将删除所有超过指定天数的文件,并logging一些关于被删除的文件数量和大小的统计信息。

我注意到有几个项目文件夹比他们应该更长,所以我开始调查。 特别是,我曾经使用过SVN的项目文件夹似乎在不停地粘贴。 事实certificate,.svn目录中的只读文件没有被删除。 我只对一个只读文件做了一个简单的testing,发现System.IO.File.DeleteSystem.IO.FileInfo.Delete不会删除一个只读文件。

我不关心在这个特定的目录中保护文件; 如果有什么重要的东西在那里,那就错了。 有没有一个.NET类,可以删除只读文件,或者我将不得不检查只读属性和去除它们?

添加一些示例代码Tim的答案:

 using System.IO; File.SetAttributes(filePath, FileAttributes.Normal); File.Delete(filePath); 

根据File.Delete的文档,你必须去掉只读属性。 您可以使用File.SetAttributes()来设置文件的属性。

如果您恰好在使用FileInfo对象,则等价物是:

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

为什么你需要检查? 只需强行清除只读标志并删除文件。

嗯,我想我宁愿放

 >del /F * 

进入一个调度的任务。 也许由一个batch file包裹来logging统计信息。

我错过了什么吗?