C# 删除文件和文件夹 遍历文件和文件夹

ygm8611 2019-05-22 12:22:12
在实践中发现1个文件夹下面可能有只读的文件和只读的文件夹。那么就需要通过层层遍历的方法取消每个文件夹里文件的只读属性然后删除。然后打开子文件夹取得里面的文件和文件夹,再取消每个文件夹里文件的只读属性然后删除。


//刪除指定文件和文件夾
public static bool DelFileAndDir(string sDet,ref string sErrMsg)
{
string sDelDir = "";
DirectoryInfo DirInfo;
ArrayList list;

try
{ //假设要删除的是和应用程序放在一起的1个文件夹及其子文件夹和文件
sDelDir = “C:\应用程序\新建文件夹”;
Debug.WriteLine(sDelDir); //下載的文件的詳細路徑和文件名
Debug.WriteLine(sDelDir);
DirInfo = new DirectoryInfo(sDelDir);
GetFilesAndDir(DirInfo); //如果不用这句遇到1个文件夹里有只读属性的文件删除当前文件夹会报错。

//遍歷本地下載文件目錄是文件的取消只讀屬性后刪除,否則繼續遍歷下面1個文件夾
DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
Debug.WriteLine(sDelDir); //需要刪除的文件夾

if (DirInfo.Exists)
{
DirInfo.Delete(true);
}

return true;
}
catch(Exception ex)
{
sErrMsg = ex.Message;
return false;
}
}

//核实某个文件夹里面的所有文件是只读的就删除,是子文件夹的通过递归调用的方式继续找出子文件夹里的文件是只读的就删除
//还有子文件夹的继续调用直到最里面的1个文件夹。
private static void GetFilesAndDir(DirectoryInfo dir)
{
foreach (FileInfo fileInfo in dir.GetFiles())
{
if (fileInfo.IsReadOnly)
{
fileInfo.Attributes = FileAttributes.Normal;
}

fileInfo.Delete();
}

foreach (DirectoryInfo directory in dir.GetDirectories())
{
GetFilesAndDir(directory);
}
}
...全文
221 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2019-05-22
  • 打赏
  • 举报
回复
直接调用 SHFileOperation type传 FO_DELETE flag传 NOCONFIRMATION
  • 打赏
  • 举报
回复
这是分享还是问题? 看起来是分享

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧