///<summary>
/// 清空指定的文件夹,但不删除文件夹
/// </summary>
/// <param name="dir"></param>
public static void DeleteFolder(string dir)
{
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
{
DirectoryInfo d1 = new DirectoryInfo(d);
if (d1.GetFiles().Length != 0)
{
DeleteFolder(d1.FullName);递归删除子文件夹
}
Directory.Delete(d);
}
}
}
/// <summary>
/// 删除文件夹及其内容
/// </summary>
/// <param name="dir"></param>
public static void DeleteFolder1(string dir)
{
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
DeleteFolder(d);递归删除子文件夹
Directory.Delete(d);
}
}
//*********************************************************************************
//以下代码已测试OK
/// <summary>
/// 删除文件夹及子文件内文件
/// </summary>
/// <param name="str"></param>
public void DeleteFiles(string str)
{
DirectoryInfo fatherFolder = new DirectoryInfo(str);
//删除当前文件夹内文件
FileInfo[] files = fatherFolder.GetFiles();
foreach (FileInfo file in files)
{
//string fileName = file.FullName.Substring((file.FullName.LastIndexOf("\\") + 1), file.FullName.Length - file.FullName.LastIndexOf("\\") - 1);
string fileName = file.Name;
try
{
if (!fileName.Equals("index.dat"))
{
File.Delete(file.FullName);
}
}
catch (Exception ex)
{
}
}
//递归删除子文件夹内文件
foreach (DirectoryInfo childFolder in fatherFolder.GetDirectories())
{
DeleteFiles(childFolder.FullName);
}
}