求助大家!C#删除文件夹下的多级子文件夹和文件,总是感觉少层循环,大家看一下是哪少了?目录是d:\aa
其下是d:\aa\ABC\123\a.inf
d:\aa\EFG\456\b.inf已知目录d:\aa,现在想删除d:\aa下的所有子文件夹和文件。
用c#递归,代码如下:我是调用这个dll文件,调用后它每次先删除一下子文件夹下的文件,然后就只删除此空文件夹就退出了,其它的根本没有删除,但是不知在哪再加一个循环,请教大家!!
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Clear
{
public class Cleardirectory
{
public String dir = ""; //dir=d:\aa
public Cleardirectory()
{
targetObject = this; } public void ClearDirectory()
{ while (Directory.Exists(dir)) //d:\aa
{ foreach (string d in Directory.GetFileSystemEntries(dir)) //
{
if (File.Exists(d))
{ FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d); }
else
{
dir = d;
ClearDirectory();
}
Directory.Delete(dir, false);
} }
}
其下是d:\aa\ABC\123\a.inf
d:\aa\EFG\456\b.inf已知目录d:\aa,现在想删除d:\aa下的所有子文件夹和文件。
用c#递归,代码如下:我是调用这个dll文件,调用后它每次先删除一下子文件夹下的文件,然后就只删除此空文件夹就退出了,其它的根本没有删除,但是不知在哪再加一个循环,请教大家!!
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Clear
{
public class Cleardirectory
{
public String dir = ""; //dir=d:\aa
public Cleardirectory()
{
targetObject = this; } public void ClearDirectory()
{ while (Directory.Exists(dir)) //d:\aa
{ foreach (string d in Directory.GetFileSystemEntries(dir)) //
{
if (File.Exists(d))
{ FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d); }
else
{
dir = d;
ClearDirectory();
}
Directory.Delete(dir, false);
} }
}
http://topic.csdn.net/u/20081206/19/f1ec5adc-5df3-4764-8f13-cb4454672c28.html
{
if (szDirPath.Trim() == "" || !Directory.Exists(szDirPath))
return;
DirectoryInfo dirInfo = new DirectoryInfo(szDirPath); FileInfo[] fileInfos = dirInfo.GetFiles();
if (fileInfos != null && fileInfos.Length > 0)
{
foreach (FileInfo fileInfo in fileInfos)
{
File.Delete(fileInfo.FullName); //删除文件
}
} DirectoryInfo[] dirInfos = dirInfo.GetDirectories();
if (dirInfos != null && dirInfos.Length > 0)
{
foreach (DirectoryInfo childDirInfo in dirInfos)
{
this.DeleteInDir(childDirInfo); //递归
}
}
Directory.Delete(dirInfo.FullName, true); //删除目录
}搂主注意要抓些异常,比如上面的删除目录和文件这两个操作,还有获取目录和文件列表这两个操作
应该改成:this.DeleteInDir(childDirInfo.FullName); //递归
///方法二 删除目录再创建相同目录
/// </summary>
/// <param name="strDir">目录地址</param>
public static void deleteFiles(string strDir)
{
if (Directory.Exists(strDir))
{
Directory.Delete(strDir, true);
Directory.CreateDirectory(strDir);
MessageBox.Show("文件删除成功!!");
}
else
{
MessageBox.Show("此目录不存在!");
}
}