首页 > 后端开发 > C++ > 正文

C++如何进行文件复制和移动_C++ 文件复制移动方法

穿越時空
发布: 2025-10-13 22:41:01
原创
304人浏览过
C++中文件复制移动可通过C++17 filesystem库实现,如fs::copy和fs::rename;或使用POSIX函数sendfile与rename;亦可用fstream流逐字节复制。推荐优先使用filesystem,旧环境可选POSIX或fstream方案。

c++如何进行文件复制和移动_c++ 文件复制移动方法

在C++中进行文件复制和移动,标准库本身没有直接提供像copy()move()这样的高层函数(直到C++17才引入<filesystem>),但有多种方式可以实现。以下是几种常用且有效的方法。

使用 C++17 filesystem 库(推荐)

从C++17开始,<filesystem>头文件提供了跨平台的文件操作支持,包括复制和移动。

文件复制:

#include <filesystem>
namespace fs = std::filesystem;

// 复制文件
fs::copy("source.txt", "dest.txt", fs::copy_options::overwrite_existing);
登录后复制

文件移动:

立即学习C++免费学习笔记(深入)”;

// 移动文件(可跨目录)
fs::rename("old_name.txt", "new_location.txt");
// 或者用 move,实际 rename 也常用于移动
登录后复制

注意:fs::rename可用于移动,但如果目标已存在,在某些系统上会失败。复制可用fs::copy配合选项控制行为。

使用 POSIX 函数(Linux/Unix 环境)

在类Unix系统中,可以直接调用POSIX接口实现高效操作。

复制文件:

#include <fcntl.h>
#include <unistd.h>
#include <sys/sendfile.h>

int src = open("source.txt", O_RDONLY);
int dst = open("dest.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);

struct stat st;
fstat(src, &st);
sendfile(dst, src, nullptr, st.st_size);

close(src); close(dst);
登录后复制

移动文件:

巧文书
巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61
查看详情 巧文书

直接使用rename()系统调用:

rename("old.txt", "new.txt"); // 成功返回0
登录后复制

这实际上是原子操作,效率高,适用于同分区移动。跨分区可能需要先复制再删除。

使用标准 C 风格文件流(兼容性好)

如果不能用C++17或POSIX,可以用<fstream>手动复制内容。

复制示例:

#include <fstream>

std::ifstream src("source.txt", std::ios::binary);
std::ofstream dst("dest.txt", std::ios::binary);

dst << src.rdbuf();

src.close(); dst.close();
登录后复制

这种方式兼容所有平台,但性能不如系统调用。适合小文件或对可移植性要求高的场景。

移动文件:可先复制后删除原文件。

if (copyFile("src.txt", "dst.txt")) {
    remove("src.txt"); // 删除原文件
}
登录后复制

封装建议与注意事项

实际开发中建议:

  • 优先使用<filesystem>(C++17+),简洁安全
  • 旧项目可用封装好的函数,判断平台选择实现
  • 复制大文件时注意缓冲区大小,可分块读写提升效率
  • 操作前检查文件是否存在、权限是否足够
  • 跨设备移动需复制+删除,不能仅靠rename

基本上就这些。现代C++推荐走filesystem路线,老环境则结合fstream和系统API灵活处理。

以上就是C++如何进行文件复制和移动_C++ 文件复制移动方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号