如何删除只读文件?

时间:2008-11-05 17:13:08

标签: c# .net file

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

我注意到一些项目文件夹的生存时间比他们应该的长,所以我开始调查。特别是,似乎我使用SVN的项目的文件夹都在附近。事实证明,.svn目录中的只读文件不会被删除。我刚刚对只读文件进行了简单测试,发现System.IO.File.DeleteSystem.IO.FileInfo.Delete不会删除只读文件。

我不关心保护此特定目录中的文件;如果有重要的东西在那里,它就在错误的地方。是否有可以删除只读文件的.NET类,或者我是否必须检查只读属性并将其删除?

5 个答案:

答案 0 :(得分:145)

根据File.Delete's documentation,,您必须删除只读属性。您可以使用File.SetAttributes()设置文件的属性。

using System.IO;

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

答案 1 :(得分:46)

根据File.Delete's documentation,,您必须删除只读属性。您可以使用File.SetAttributes()设置文件的属性。

答案 2 :(得分:19)

如果您正好使用FileInfo对象,则等效于:

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

嗯,我想我宁愿放

>del /F *

进入预定任务。可能由批处理文件包装以记录统计信息。

我错过了什么吗?