如何删除只读文件?

我有一个垃圾目录,我扔下载,一次性项目,电子邮件草稿,和其他各种各样的东西,可能是有用的几天,但不需要永远保存。为了阻止这个目录接管我的机器,我编写了一个程序,可以删除所有超过指定天数的文件,并记录一些关于被删除文件的数量和大小的统计数据,只是为了好玩。

我注意到一些项目文件夹比它们应该存在的时间长得多,所以我开始调查。特别是,我曾经使用过 SVN 的项目的文件夹似乎一直存在。中的只读文件。没有删除 svn 目录。我只是对一个只读文件做了一个简单的测试,发现 System.IO.File.DeleteSystem.IO.FileInfo.Delete不会删除一个只读文件。

我不关心保护这个特定目录中的文件; 如果有什么重要的东西在那里,它就在错误的地方。有没有。NET 类可以删除只读文件,还是要检查只读属性并删除它们?

47018 次浏览

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

嗯,我想我宁愿把

>del /F *

也许用一个批处理文件包装,用于记录统计信息。

我错过了什么吗?

根据 文件,删除文件,,您必须去掉只读属性。

根据 文件,删除文件,,您必须去掉只读属性。

using System.IO;


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

如果碰巧使用的是 FileInfo对象,那么等价的是:

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