C#复制文件夹,删除文件夹的方法

65 篇文章 0 订阅
22 篇文章 0 订阅

C#复制文件的时候只提供了复制文件的类,没有复制文件夹。 
删除文件夹的时候,文件夹下面有文件的时候是不能删除的,需要先删除文件夹下面所有文件才能删除文件夹。 

在网上找了很多资料,在这里记录一下这两个方法: 

复制文件夹: 

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>
/// 复制文件夹
/// </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);
            }
        }



删除文件夹: 
C#代码 

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

 }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值