C++ fstream 二进制读写文件 (一个文件备份的例子)

直接上代码:

 

复制代码
#include <iostream>
#include <string>
#include <vector>
#include <fstream>

bool ReadFile(std::string& strFile, std::vector<char>& buffer)
{
    std::ifstream infile(strFile.c_str(), std::ifstream::binary);
    if (!infile.is_open())
    {
        printf("Read File:%s Error ... \n", strFile.c_str());
        return false;
    }

    // 获取文件大小
    infile.seekg(0, std::ifstream::end);
    long size = infile.tellg();
    infile.seekg(0);

    buffer.resize(size);
    printf("文件:[%s] 共有:%ld(字节) ..... \n", strFile.c_str(), size);

    // read content of infile
    infile.read(&buffer[0], size);
    infile.close();
    return true;
}

bool WriteFile(std::string& strFile, std::vector<char>& buffer)
{
    std::ofstream outfile(strFile.c_str(), std::ifstream::binary);
    if (!outfile.is_open())
    {
        printf("Write File:%s Error ... \n", strFile.c_str());
        return false;
    }
    outfile.write(&buffer[0], buffer.size());
    outfile.close();
    return true;
}

void test1126_222()
{
    std::string oldFile = "test.txt";
    std::vector<char> buffer;
    if (ReadFile(oldFile, buffer))
    {
        std::string newFile("test_new.txt");
        if (WriteFile(newFile, buffer))
        {
            printf("备份文件 %s --> %s 成功 ... \n", oldFile.c_str(), newFile.c_str());
        }
    }
}

int main()
{
    test1126_222();
    return 0;
}
复制代码

 

posted @   xcywt  阅读(588)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2017-11-26 《Linux命令行与shell脚本编程大全》第十四章 处理用户输入
2015-11-26 基于int的Linux的经典系统调用实现
作者:xcywt
出处:https://www.cnblogs.com/xcywt//
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
点击右上角即可分享
微信分享提示