如何删除只读文件?
我有一个垃圾邮件目录,在那里我可以下载,一次性的项目,电子邮件草稿和其他几天可能有用的东西,但不需要永久保存。 为了阻止这个目录接pipe我的机器,我编写了一个程序,它将删除所有超过指定天数的文件,并logging一些关于被删除的文件数量和大小的统计信息。
我注意到有几个项目文件夹比他们应该更长,所以我开始调查。 特别是,我曾经使用过SVN的项目文件夹似乎在不停地粘贴。 事实certificate,.svn目录中的只读文件没有被删除。 我只对一个只读文件做了一个简单的testing,发现System.IO.File.Delete
和System.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统计信息。
我错过了什么吗?
- 通常最好使用 – StringComparison.OrdinalIgnoreCase或StringComparison.InvariantCultureIgnoreCase?
- 在组织方面,当我使用entity framework代码时,我应该在哪里进行常见的查询?
- 性能差异…如此戏剧性?
- 在Visual Studio 2012中debugging.NET Framework源代码?
- 连接string,而不是使用一堆TextBlocks
- 如何使用WCF(net.tcp)服务使用基于套接字的客户端?
- 在.NET中如何产生和等待实现控制stream?
- “testing表格仅适用于来自本地机器的请求。”
- MissingManifestResourceException意味着什么以及如何解决它?