如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<pre name= "code" class = "cpp" >#include<iostream>
#include<fstream>
using namespace std;
#define MAX_PACK_SIZE 10240
void main()
{
char filePath[256];
strcpy (filePath, "F:/视频/1.mp4" ); //获取路径
FILE *pFile;
pFile= fopen (filePath, "r+b" );
if (pFile==NULL)
{
cout<< "打开文件失败" <<endl;
return ;
}
fseek (pFile,0,SEEK_END);
// long nLength=ftell(pFile); //获取文件长度(字节数)
_int64 nLength=_ftelli64(pFile); //获取的长度最大为2的64次方-1个字节
cout<< "文件长度为:" <<nLength<<endl;
if (nLength==-1) //读取出错
{
return ;
}
char buff[MAX_PACK_SIZE+1]; //用于存放文件部分数据
char filePath1[256];
strcpy (filePath1, "E:/图片/Saved Pictures/8.mp4" );
FILE *File;
File= fopen (filePath1, "a+b" ); //打开文件以append和读的方式进行,如果不存在文件则创建
fseek (pFile,0,SEEK_SET); //定位到开始位置
for (_int64 i=0;i+MAX_PACK_SIZE+1<nLength;i+=MAX_PACK_SIZE)
{
if (i+MAX_PACK_SIZE+1<nLength)
{
fread (buff, sizeof ( char ),MAX_PACK_SIZE,pFile); //从文件当前定位的位置开始读取MAX_PACK_SIZE个字节
fseek (pFile,0,SEEK_CUR); //定位到上一步定位的位置加MAX_PACK_SIZE的位置
fwrite (buff, sizeof ( char ),MAX_PACK_SIZE,File); //将buff中的数据添加到File中
}
else
{
fread (buff, sizeof ( char ),nLength-i,pFile);
fseek (pFile,0,SEEK_CUR);
fwrite (buff, sizeof ( char ),nLength-i,File);
}
}
fclose (pFile); //关闭文件
fclose (File);
}
|
以上这篇C++ 将一个文件读入数组再读出数组的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/riyuedangkong1/article/details/52724531