求助广大 V 友,使用 C 如何实现把一个文件复制到另外一个文件夹下

2016-12-09 21:40:41 +08:00
 Alain1995
1780 次点击
所在节点    问与答
8 条回复
billlee
2016-12-09 21:59:37 +08:00
C 语言不能做这个事情, 系统调用才行

POSIX API: https://linux.die.net/man/2/rename

Windows API: https://msdn.microsoft.com/en-us/library/aa365239(v=vs.85).aspx
wevsty
2016-12-09 22:23:12 +08:00
rename 或者 MoveFile 都是移动文件,并不是复制。

如果需要跨平台进行文件复制的话,可以自己用 fopen,fread,fwrite 这些函数自己封装一个复制文件的函数。
如果是 Windows 下面可以使用 CopyFile,CopyFileEx,CopyFile2 等 api 来完成,可以参考 MSDN
https://msdn.microsoft.com/en-us/library/aa363851(v=vs.85).aspx
Alain1995
2016-12-09 22:36:06 +08:00
@billlee
@wevsty
是 linux 下的= =
wevsty
2016-12-09 22:42:53 +08:00
@Alain1995
自己用 fopen,fread,fwrite 这些函数自己封装一下就好,都是 C 的标准库, Linux 或者 Windows 都是通用的。
或者更简单的 system 调 cp 也可以
stamaimer
2016-12-09 23:52:52 +08:00
Qt
Arnie97
2016-12-10 01:30:42 +08:00
POSIX 没有专门的复制函数,如楼上所说一边 fread 一边 fwrite 即可。
http://stackoverflow.com/questions/17666316/is-there-a-posix-function-to-copy-a-file
meta
2016-12-10 01:47:27 +08:00
难道这不就是个 read&write 的事,设置个块大小不就完了。
waruqi
2016-12-10 08:48:50 +08:00
sendfile

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/326537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX