ASP.NET C# 使用 System.IO 复制目录和子目录

2023-12-10

我需要将整个目录 C:\X 复制到 C:\Y\X,并且还需要复制子文件夹。
有什么方法可以使用 System.IO.File\Directory 命名空间来做到这一点吗?
感谢所有帮助者!


此类将复制或移动文件夹,无需递归调用。
这些方法使用自己的堆栈来处理递归,这是为了避免堆栈溢出异常.

public static class CopyFolder
{
    public static void CopyDirectory(string source, string target)
    {
        var stack = new Stack<Folders>();
        stack.Push(new Folders(source, target));

        while (stack.Count > 0)
        {
            var folders = stack.Pop();
            Directory.CreateDirectory(folders.Target);
            foreach (var file in Directory.GetFiles(folders.Source, "*.*"))
            {
                string targetFile = Path.Combine(folders.Target, Path.GetFileName(file));
                if (File.Exists(targetFile)) File.Delete(targetFile);
                File.Copy(file, targetFile);
            }

            foreach (var folder in Directory.GetDirectories(folders.Source))
            {
                stack.Push(new Folders(folder, Path.Combine(folders.Target, Path.GetFileName(folder))));
            }
        }
    }
    public static void MoveDirectory(string source, string target)
    {
        var stack = new Stack<Folders>();
        stack.Push(new Folders(source, target));

        while (stack.Count > 0)
        {
            var folders = stack.Pop();
            Directory.CreateDirectory(folders.Target);
            foreach (var file in Directory.GetFiles(folders.Source, "*.*"))
            {
                string targetFile = Path.Combine(folders.Target, Path.GetFileName(file));
                if (File.Exists(targetFile)) File.Delete(targetFile);
                File.Move(file, targetFile);
            }

            foreach (var folder in Directory.GetDirectories(folders.Source))
            {
                stack.Push(new Folders(folder, Path.Combine(folders.Target, Path.GetFileName(folder))));
            }
        }
        Directory.Delete(source, true);
    }
    public class Folders
    {
        public string Source { get; private set; }
        public string Target { get; private set; }

        public Folders(string source, string target)
        {
            Source = source;
            Target = target;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET C# 使用 System.IO 复制目录和子目录 的相关文章

  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 为多语言 ASP.NET WebAPI 应用程序设置 CurrentCulture 的最佳位置

    基于这个问题 为多语言 ASP NET MVC Web 应用程序设置 CurrentCulture 的最佳位置 https stackoverflow com questions 8226514 best place to set curr
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 是否可以将 64 位 dll 加载到 32 位进程中?

    是否可以将 64 位 dll 加载到 32 位进程中 一般来说 我知道这不可能发生 然而 也许有一些例外 不可以 64 位进程都无法加载 32 位 DLL 如果您使用的是 64 位操作系统 则可以在 64 位进程中加载 DLL 并通过以下方
  • 如何在单击 CursorAdapter 中的按钮时在列表视图项行中执行更新和删除操作

    在 sqlite 数据库的帮助下 我添加了板球运动员姓名 最后它在列表视图中显示了姓名 我在 CustomCursorAdapter java 中添加了更新和删除按钮 下面我发布了相应的适配器代码 自定义CursorAdapter java
  • @Nullable注解用法

    我看到java中的一些方法声明为 void foo Nullable Object obj 是什么意思 Nullable这里 这是否意味着输入可以是null 如果没有注解 输入仍然可以为null 所以我猜不仅仅是这样 它清楚地表明该方法接受
  • 将点击事件添加到 IOS NSMutableAttributedString

    我有一个 NSMutableAttributedString 例如 鲍勃喜欢你的照片 我想知道是否可以向 Bob 和 图片 添加两个不同的点击事件 理想情况下 点击 Bob 将呈现一个带有 Bob 个人资料的新视图控制器 点击 图片 将呈现
  • JavaScript 中如何检查对象是否具有任何属性?

    假设我声明 var ad 如何检查该对象是否包含任何用户定义的属性 您可以使用内置的Object keys方法获取对象上的键列表并测试其长度 var x some code where value of x changes and than
  • 当开发名称以数字开头时,Android studio中的包名称?

    我想以我公司的名义创建应用程序 Android Studio 建议使用您的域名 例如 域名 example com 应用程序 我的应用程序 给出 com example myApp 的包名称 没关系 但我的公司名称以数字开头 Android
  • 如何在 Spotfire 中显示前 10 个列值

    我需要使用 Spotfire 显示前 10 个值 我用谷歌搜索了很多 但找不到最好的解决方案 我按照这个教程进行操作 创建动态前十图表但没有找到成功 我怎样才能做到这一点 如何通过前 10 个值限制可视化 有两种方法可以做到这一点 我将列出
  • django-postman扩展了一个不存在的base.html

    我已经安装并配置了django postman基于文档 in urls py在我的项目的根目录中 r messages include postman urls 在设置 py中 INSTALLED APPS django contrib a
  • php - move_uploaded_file - 为什么它很重要?

    我无法想象为什么我应该使用这个函数而不是简单的重命名 手册写道 移动上传文件 该函数检查以确保 filename 指定的文件 是一个有效的上传文件 意味着它是通过 PHP 的 HTTP 上传的 POST 上传机制 如果文件有效 它将被移动到
  • sscanf 函数更改另一个字符串的内容

    我在读取字符串时遇到问题sscanf 我简化了代码以专注于问题 下面是整个代码中的一个函数 它应该打开一个文件并读取一些内容 但sscanf表现得很奇怪 例如我声明一个名为atm与内容 ATOM 之前sscanf它将这个字符串打印为ATOM
  • 如何通过java代码连接sql server?

    我正在创建需要将我的服务连接到 sql server 的应用程序 当我添加依赖后运行测试代码时 它运行成功 这是成功运行的测试代码 import java sql Connection import java sql DatabaseMet
  • MS Access 根据表单值传递

    如何将传递查询分配给依赖于表单中另一个值的行源 本质上我想这样做 SELECT x companyid x companyname x productid FROM x WHERE x CompanyID Forms Reporting C
  • 将 Doctrine 与 Zend Framework 1.8 应用程序集成

    我有兴趣使用 Doctrine 作为我正在编写的新 Zend Framework 应用程序的 ORM 我正在尝试找出尽可能简单地集成它的最佳方法 我发现的每个例子都是不同的 其中很多都早于 ZF 1 8 中新的自动加载功能 他们还没有为我工
  • 在threading.thread中,为什么args在末尾带有逗号[重复]

    这个问题在这里已经有答案了 我正在阅读Python中的多线程 当我进入如下代码时 x threading Thread target thread function args 1 我有点困惑为什么args is 1 最后需要一个逗号 我已经
  • unicode 模式下的 preg_split:delim_capture 不起作用?

    我正在尝试使用正则表达式将一大块中文文本分割成句子 就我的目的而言 句子分隔符是 全角句号 0x3002 全角问号 0xFF1F 全角感叹号 0xFF01 现在 假设我的 str 是这样的 str 你好 你好吗 我是程序员 不太懂这个我问题
  • Reporting Services 2008 - 长子报表导致分页

    类似这个问题 但我有一个 主 报告 其中包含许多子报告 一切都运行良好 直到其中一个子报表在渲染时 例如 PDF 将占据页面上剩余的空间 在这种情况下 分页会导致子报表在新页面上开始 有时 当一个报表仅占用一页上的一点空间 然后由于以下子报
  • 在R中创建二元指示矩阵(布尔矩阵)

    我有一个表明参加会议的数据列表 如下所示 Event Participant ConferenceA John ConferenceA Joe ConferenceA Mary ConferenceB John ConferenceB Te
  • Symfony2:学说:PHPUnit:在单元测试中使用模拟实体管理器刷新期间设置实体 ID

    Symfony 2 8 13 Doctrine ORM 2 5 5 PHPUnit 5 7 5 我想测试一个使用学说实体管理器的类的方法 此公共方法调用一个私有方法来实例化 Bookmark 实体 刷新它并返回该实体 然后 在测试的方法中我
  • 不使用 for-each 旋转 背景颜色

    我正在尝试设置其他每个的背景颜色 tr 我没有使用 for each 循环 因为我使用一些模板来根据节点值过滤数据 tr
  • ASP.NET C# 使用 System.IO 复制目录和子目录

    我需要将整个目录 C X 复制到 C Y X 并且还需要复制子文件夹 有什么方法可以使用 System IO File Directory 命名空间来做到这一点吗 感谢所有帮助者 此类将复制或移动文件夹 无需递归调用 这些方法使用自己的堆栈