我有一个垃圾目录,我可以在其中下载,一次性项目,电子邮件草稿以及其他可能有用几天但不需要永久保存的东西。为了阻止这个目录接管我的机器,我写了一个程序,它将删除超过指定天数的所有文件,并记录一些关于删除的文件数量及其大小的统计信息,只是为了好玩。
我注意到一些项目文件夹的生存时间比他们应该的长,所以我开始调查。特别是,似乎我使用SVN的项目的文件夹都在附近。事实证明,.svn目录中的只读文件不会被删除。我刚刚对只读文件进行了简单测试,发现System.IO.File.Delete
和System.IO.FileInfo.Delete
不会删除只读文件。
我不关心保护此特定目录中的文件;如果有重要的东西在那里,它就在错误的地方。是否有可以删除只读文件的.NET类,或者我是否必须检查只读属性并将其删除?
答案 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 *
进入预定任务。可能由批处理文件包装以记录统计信息。
我错过了什么吗?