操作文件的实用类,删除目录,清空目录,删除文件

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


}

posted @ 2011-04-13 14:12  梦幻泡影  阅读(501)  评论(0编辑  收藏  举报