我有一个垃圾目录,我把下载文件、一次性项目、电子邮件草稿和其他一些可能在几天内有用但不需要永远保存的东西放在这里。为了阻止这个目录接管我的机器,我写了一个程序,它将删除所有超过指定天数的文件,并记录一些关于删除的文件数量和大小的统计数据,只是为了好玩。
我注意到一些项目文件夹存在的时间比它们应该存在的时间要长得多,所以我开始调查。特别是,我使用过SVN的项目的文件夹似乎一直留在那里。事实证明,.svn目录中的只读文件没有被删除。我刚刚在一个只读文件上做了一个简单的测试,发现System.IO.File.Delete
和System.IO.FileInfo.Delete
不会删除一个只读文件。
我不关心保护这个特定目录中的文件;如果有重要的东西在那里,那就是错误的位置。有没有可以删除只读文件的.NET类,或者我必须检查只读属性并剥离它们?
发布于 2008-11-05 17:23:24
根据File.Delete's documentation,的说法,您必须剥离只读属性。您可以使用File.SetAttributes()设置文件的属性。
using System.IO;
File.SetAttributes(filePath, FileAttributes.Normal);
File.Delete(filePath);
发布于 2008-11-05 17:19:14
根据File.Delete's documentation,的说法,您必须剥离只读属性。您可以使用File.SetAttributes()设置文件的属性。
发布于 2011-11-29 20:21:09
如果您碰巧使用的是FileInfo
对象,则等效项为:
file.IsReadOnly = false;
file.Delete();
https://stackoverflow.com/questions/265896
复制相似问题