c# 复制 删除文件夹

c# 复制 删除文件夹

之前需要复制和删除文件夹,就在网上找了一下,然后发现了这篇文章,虽然复制文件夹最后还是没用上,但是感觉还是有用的,先保存下来,以待后用。另外找到了其他的删除文件夹的方式,不需要做递归,也一并保存下来。

原文链接:https://blog.csdn.net/lxyruanjian/article/details/84012173

C#复制文件的时候只提供了复制文件的类,没有复制文件夹。
删除文件夹的时候,文件夹下面有文件的时候是不能删除的,需要先删除文件夹下面所有文件才能删除文件夹。
在网上找了很多资料,在这里记录一下这两个方法:
复制文件夹:

/// <summary>
/// 复制文件夹
/// </summary>
/// <param name="sourceFolder">待复制的文件夹</param>
/// <param name="destFolder">复制到的文件夹</param>        
    private void CopyFolder(string sourceFolder, string destFolder)        
{            
    if (!Directory.Exists(destFolder))            
    {                
        Directory.CreateDirectory(destFolder);            
    }            
    string[] files = Directory.GetFiles(sourceFolder);            
    foreach (string file in files)            
    {                
        string name = Path.GetFileName(file);                
        string dest = Path.Combine(destFolder, name);                
        File.Copy(file, dest);            
    }            
    string[] folders = Directory.GetDirectories(sourceFolder);            
    foreach (string folder in folders)            
    {                
        string name = Path.GetFileName(folder);                
        string dest = Path.Combine(destFolder, name);                
        CopyFolder(folder, dest);            
    }        
}

删除文件夹:

/// <summary>   
/// C# 删除文件夹      
/// </summary>   
/// <param name="dir">删除的文件夹,全路径格式</param>           
private void DeleteFolder(string dir)        
{            // 循环文件夹里面的内容               
    foreach (string f in Directory.GetFileSystemEntries(dir))            
    {                
        // 如果是文件存在                   
        if (File.Exists(f))                
        {                    
            FileInfo fi = new FileInfo(f);                    
            if (fi.Attributes.ToString().IndexOf("Readonly") != 1)                    
            {                        
                fi.Attributes = FileAttributes.Normal;                    
            }                    
            // 直接删除其中的文件                       
            File.Delete(f);                
        }                
        else                
        {                    
            // 如果是文件夹存在                       
            // 递归删除子文件夹                       
            DeleteFolder(f);                
        }            
    }            
    // 删除已空文件夹               
    Directory.Delete(dir);        
}

我最后使用的:

/// <summary>
/// delete folder
/// </summary>
/// <param name="TempDirectory">folder name</param>
/// <returns></returns>
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(TempDirectory);
if (dir.Exists)
   dir.Delete(true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值