有人可以指导我找到可能的解决方案吗?我不想使用 /bin/cp
或任何其他外国应用程序。我希望我的程序是独立的。我还知道每个系统都是非常具体的,所以我对 UNIX/Linux 兼容性感兴趣。
如何解决?只需进入源目录并在目标目录中创建一个新目录并在其中复制文件,或者有更好的解决方案吗?
顺便说一句,我的目标是:将所有第一级子目录递归复制到目标目录中(如果它们不存在)
最佳答案
您确实需要某种递归下降到目录树中。这样做,实际上可以使其非常可移植(在 Linux 上使用 opendir
/readdir
,在 Linux 上使用 FindFirstFile
/FindNextFile
window )。剩下的问题是实际的复制。您可以使用 C 标准库来实现以下算法:
- 开源文件
- 打开目标文件
- 在循环中,从源
fread
一个恒定大小的 block ,然后fwrite
将其写入目标。如果源文件不再包含数据则停止
希望这有帮助:)
关于在 Linux/UNIX 上用纯 C 递归复制目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192295/