You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Standard中复制目录的函数是什么?原Framework方法无法使用

在.NET Standard中替代My.Computer.FileSystem.CopyDirectory的解决方案

我太懂这种痛点了——在.NET Framework里用惯了My.Computer.FileSystem.CopyDirectory一键复制目录,换到.NET Standard突然发现这个API没了,而System.IO.Directory虽然管着目录的创建、删除、移动,却偏偏漏掉了复制功能!

别慌,咱们自己动手实现一个完全等效的方法就行,逻辑和原API一致,而且完美适配.NET Standard。这里有个现成的实现:

using System.IO;

public static class DirectoryHelper
{
    public static void CopyDirectory(string sourceDirectory, string destinationDirectory, bool overwriteExistingFiles = false)
    {
        // 先确保目标目录存在,不存在就创建
        Directory.CreateDirectory(destinationDirectory);

        // 遍历复制源目录下的所有文件
        foreach (string sourceFile in Directory.GetFiles(sourceDirectory))
        {
            string destinationFile = Path.Combine(destinationDirectory, Path.GetFileName(sourceFile));
            File.Copy(sourceFile, destinationFile, overwriteExistingFiles);
            // 可选:同步文件属性(比如只读、隐藏等)
            File.SetAttributes(destinationFile, File.GetAttributes(sourceFile));
        }

        // 递归处理所有子目录
        foreach (string sourceSubDir in Directory.GetDirectories(sourceDirectory))
        {
            string destinationSubDir = Path.Combine(destinationDirectory, Path.GetFileName(sourceSubDir));
            CopyDirectory(sourceSubDir, destinationSubDir, overwriteExistingFiles);
        }
    }
}

用法说明

这个方法和你原来用的My.Computer.FileSystem.CopyDirectory几乎一模一样:

  • 第一个参数是源目录路径,第二个是目标目录路径
  • 第三个可选参数控制是否覆盖目标目录中已存在的文件(默认不覆盖)
  • 递归复制所有子目录和文件,还可以同步原文件的属性(注释掉的那行如果需要就打开)

比如你原来的VB调用是:

My.Computer.FileSystem.CopyDirectory("C:\Source", "C:\Dest", True)

现在换成C#的话就是:

DirectoryHelper.CopyDirectory(@"C:\Source", @"C:\Dest", true);

这样就完美解决了.NET Standard没有内置目录复制方法的问题,而且代码很轻量,没有额外依赖。

内容的提问来源于stack exchange,提问作者Doug Null

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:34:15