C++ 文件的拷贝

2023-08-28  本文已影响0人  红鲤鱼与绿鲤鱼与驴与鱼
/**
 文件的复制
 */
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 int main(){
     string filePath = "/Users/aaa/Documents/C++File/a.jpg";
    string copyFilePath = "/Users/aaa/Documents/C++File/a_copy.jpg";
    
     FILE* file = fopen(filePath.data(),"rb");
     if(!file){
         printf("文件不存在:%s\n",filePath.data());
         exit(0);
     }
     FILE* fileCopy = fopen(copyFilePath.data(), "wb");
     
     //方式一:单个字节拷贝,文本和二进制文件都可以拷贝(但是效率低)
//     int buff = 0;
//     while(buff!=-1) {
//         buff = fgetc(file);
//         fputc(buff,fileCopy);
//     }
     
     //方式二:这种方式拷贝文本没有问题,拷贝二进制文件会出现问题(目前只测试了图片的拷贝)
//     char buff[1024];
//     while (fgets(buff, 1024, file)) {
//         fputs(buff, fileCopy);
//     }
     
     //方式三:可以拷贝文本或者二进制文件(指图片、音视频文件)
     
     int buff[1024];
     int len;
     while ((len = fread(buff, sizeof(int), sizeof(buff)/sizeof(int) , file)) != 0) {
         fwrite(buff, sizeof(int) , len, fileCopy);
     }
     
   
     printf("拷贝完成\n");
     fclose(file);
     fclose(fileCopy);
     
    return 0;
}

方式一 : 使用 fgetc() 和 fputc() 函数

这个两个函数都是单个字节读取和写入,虽然可以拷贝 文本文件二进制文件(指音视频和图片文件), 但是效率会比较慢

方式二: 使用 fgets() 与 fputs() 函数

这种方式只能拷贝文本文件,不能拷贝图片音视频文件

方式三: 使用 fread() 和 fwrite() 函数

使用这两个函数都可以复制,没有文件类型的限制

上一篇 下一篇

猜你喜欢

热点阅读