【问题标题】:Copy folder in c [duplicate]在c中复制文件夹[重复]
【发布时间】:2016-11-07 00:47:09
【问题描述】:

在c中将文件夹(及其全部内容)从adress1(文件夹的地址)复制到adress2的最佳方法是什么?我不想将它复制到缓冲区然后保存,因为它可能包含大文件

【问题讨论】:

  • 当前的 c++ 标准没有文件夹的概念。您可以使用system() 和您操作系统的适当命令。
  • boost:filesystem,在 C++ 的情况下(你标记了它)。在 C - 仅平台 API 或 system() 中
  • 对于 c++ 请阅读这个问题:stackoverflow.com/questions/8593608/…

标签: c windows


【解决方案1】:

如果您想自己实现,请查看this 代码

如果您的实现不是那么重要,并且您可以使用操作系统的 cp 命令,而不仅仅是在代码中为 Windows 使用 system('cp',...)system('xcopy',...)

无论如何,每个实现都会缓冲一些文件以供复制(如果您自己实现,则可以控制缓冲区的大小),例如:

假设您要复制大小为 10000 字节的文件 X
使用大小为 100 字节的缓冲区,您将循环 100 次填充缓冲区并写入目标文件

【讨论】:

  • "你可以使用操作系统的cp 命令" - 这是假设操作系统有一个cp 命令。 Windows 没有,而且由于这个问题是专门针对 Windows 的,所以我将不得不对这个答案投反对票。
  • 你现在会投票吗?
  • 没有。 OP 要求 "best" 方式。调用system 可以说是最糟糕的。使用外壳优化的文件和文件夹复制基础结构。它在报告错误方面要好得多,可以提供进度反馈,并且在单个卷中移动文件时速度非常快。
  • 我们必须同意不同意。我注意到您在否决之前没有阅读整个答案,这使得这次讨论浪费时间
  • 我阅读了整个建议的答案,并且外壳的优化复制/移动不会缓冲任何数据,除非它必须。用一个反例很容易反驳绝对陈述。本质上,您有一个仅链接的答案,一个基于system() 的糟糕解决方案,然后是不准确的陈述。在这种情况下,应该使用 "This answer is not有用" 选项。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 2021-07-28
  • 2015-08-19
  • 2010-10-15
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
相关资源
最近更新 更多