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

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

 

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

附:递归遍历文件的方法

ContractedBlock.gif ExpandedBlockStart.gif 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);
            }
        }

    }

转载于:https://www.cnblogs.com/zhangsir/archive/2009/03/10/1407979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值