using System;
using System.Text;
using System.IO;
using System.Linq;
public static partial class FileUtil
{
#region 删除目录和文件
/// <summary>
/// 删除目录及其下面的所有子目录和文件。如果目录有只读属性,则先去掉只读属性,然后删除。
/// </summary>
/// <param name="path"></param>
public static void DeleteDirectory(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
DeleteDirectory(di);
}
/// <summary>
/// 删除目录及其下面的所有子目录和文件。如果目录有只读属性,则先去掉只读属性,然后删除。
/// </summary>
/// <param name="di"></param>
public static void DeleteDirectory(DirectoryInfo di)
{
FileSystemInfo[] fsiArr = di.GetFileSystemInfos();
foreach (FileSystemInfo fsi in fsiArr)
{
fsi.Refresh();
if (fsi is DirectoryInfo)
{
DeleteDirectory(fsi.FullName);
}
else
{
DeleteFile(fsi.FullName);
}
}
di.Refresh();
if ((di.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
di.Attributes &= ~FileAttributes.ReadOnly;
}
di.Delete();
}
/// <summary>
/// 删除文件。如果文件具有只读属性,则先去掉只读属性,然后删除。
/// </summary>
/// <param name="fileName">要删除的文件名,应为绝对路径</param>
public static void DeleteFile(string fileName)
{
FileInfo fi = new FileInfo(fileName);
DeleteFile(fi);
}
/// <summary>
/// 删除文件。如果文件具有只读属性,则先去掉只读属性,然后删除。
/// </summary>
/// <param name="fi">要删除的文件</param>
public static void DeleteFile(FileInfo fi)
{
fi.Refresh();
if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
fi.Attributes &= ~FileAttributes.ReadOnly;
}
fi.Delete();
}
/// <summary>
/// 清空目录。如果目录下的子目录或文件有只读属性,则先去掉只读属性,然后删除。
/// 此方法与 DeleteDirectory 的区别是,DeleteDirectory 会将目录连同其子对象一起删除,
/// 此方法不删除目录本身,而只是删除它的子对象。
/// </summary>
/// <param name="path"></param>
public static void EmptyDirectory(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
EmptyDirectory(di);
}
/// <summary>
/// 清空目录。如果目录下的子目录或文件有只读属性,则先去掉只读属性,然后删除。
/// 此方法与 DeleteDirectory 的区别是,DeleteDirectory 会将目录连同其子对象一起删除,
/// 此方法不删除目录本身,而只是删除它的子对象。
/// </summary>
/// <param name="di"></param>
public static void EmptyDirectory(DirectoryInfo di)
{
foreach (FileSystemInfo fsi in di.GetFileSystemInfos())
{
if (fsi is DirectoryInfo)
{
DeleteDirectory(fsi.FullName);
}
else
{
DeleteFile(fsi.FullName);
}
}
}
#endregion
}