System.IO.Directory.Delete(@"C:\abcdefg",true )
无论是否为空都回删除,但是如果里面有只读文件的话,会有错误提示
如果只读文件也要删除的话,要首先改变文件的属性,然后使用上述命令删除。
下面的代码就是改变文件属性的。
public static void RemoveReadonlyAttribute(DirectoryInfo dirInfo)
{
//文件夹属性更改
if ((dirInfo.Attributes & FileAttributes.ReadOnly) ==
FileAttributes.ReadOnly)
dirInfo.Attributes = FileAttributes.Normal;
//文件夹内全部的文件的属性更改
foreach (FileInfo fi in dirInfo.GetFiles())
if ((fi.Attributes & FileAttributes.ReadOnly) ==
FileAttributes.ReadOnly)
fi.Attributes = FileAttributes.Normal;
//再归更改文件属性
foreach (DirectoryInfo di in dirInfo.GetDirectories())
RemoveReadonlyAttribute(di);
}
===========================================================
附:递归遍历文件的方法
private void FileList(FileSystemInfo f)//FileList为自己创建的方法
{
if (!f.Exists)//先判断f所指的文件或文件夹是否存在
{
return;
}
DirectoryInfo di = f as DirectoryInfo;//如果给定参数不是文件夹则退出,as用法可以去看我转载的"c# Is 和 As"
if (di == null)
{
return;
}
FileSystemInfo[] fs = di.GetFileSystemInfos();//获取文件夹中所有文件和文件夹
//下而对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
foreach (FileSystemInfo f2 in fs)
{
FileInfo file = f2 as FileInfo;
if (file != null)
{
//listBox1.Items.Add(file.Name);//如果是文件则进行操作
}
else
{
FileList(f2);
}
}
}