#include <stdio.h>
#define IN
int rwFile(IN char * orgnFile, IN char * outFile)
{
FILE *fpIN;
FILE *fpOUT;
fpIN = fopen(orgnFile,"rb"); // 打开原始的文件
// 获取文件大小
fseek(fpIN,0L,SEEK_END); // 这一句是将文件指针fp移动到文件数据的最后一位上
int len = ftell(fpIN); // 获取当前文件指针到文件开头的长度大小
fseek(fpIN,0,0); // 将文件指针fp移动到文件开头的地方
printf("%d\n", len);
unsigned char in[len];
fread(in,1,len,fpIN); // 读取原始文件,将文件内容存到 in 中
fclose(fpIN);
fpOUT = fopen(outFile,"w+"); // 打开要写入的文件
fwrite(in,sizeof(in),1,fpOUT); // 将上面读取的 in 写入到要写入的文件中
fclose(fpOUT);
return 0;
}
int main()
{
char *origin_file = "origin.txt";
char *out_file = "out.txt";
rwFile(origin_file, out_file);
return 0;
}
上述代码遇到文件比较大的可能就无能为力了
**
对大文件读写:
**
#include <stdio.h>
#include<malloc.h>
#define IN
#define OUT
// 获取文件大小
int FileSize(IN char *file)
{
FILE *fil;
fil = fopen(file,"rb");
fseek(fil,0L,SEEK_END);
int filesize = ftell(fil);
fseek(fil,0,0);
return filesize;
}
// 读取文件
int ReadFileData(IN char *fileName, OUT char *filedata)
{
FILE *fpIN;
int fileSizes = FileSize(fileName);
fpIN = fopen(fileName,"rb");
fread(filedata,1,fileSizes,fpIN);
fclose(fpIN);
}
// 写入文件
int WriteToFile(char *filedata, int size, OUT char *outFileName)
{
FILE *fpOUT;
fpOUT = fopen(outFileName,"w+");
fwrite(filedata,1,size,fpOUT);
fclose(fpOUT);
}
int main()
{
char *origin_file = "file.mp4";
int orgfilesize = FileSize(origin_file); // 获取文件的大小
char *file_data=malloc(orgfilesize); // 分配文件大小的内存
ReadFileData(origin_file, file_data); // 读取文件
char *outFile = "outfile.mp4";
WriteToFile(file_data,orgfilesize,outFile); // 写出文件
return 0;
}
版权声明:本文为weixin_43451928原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。