您的位置:首页 > 其它

如何完全删除一个非空文件夹

2009-03-10 16:49 330 查看
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);

}

===========================================================

附:递归遍历文件的方法

Code

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);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: