c++基础之文件的随机访问fseek

来源:互联网 发布:淘宝网宣纸 编辑:程序博客网 时间:2024/06/03 06:59

计算机领域的两个术语:
顺序访问:sequential access,按顺序访问,不能跳跃;
随机访问:random access,随意跳到一个位置访问。

fseek

使用fseek可以实现文件FILE*的随机访问
int fseek(FILE *stream,long offset, int mode);
参数:
stream:文件指针
offset:一个整数,表示偏移值;
mode:相对位置;
返回值:
0:操作成功;-1,操作失败

跳到第100个字节的位置

fssek(fp,100,SEEK_SET);

跳到倒数100字节的位置

fseek(fp,100,SEEK_END);

跳到当前位置往前100个字节

fseek(fp,-100,SEEK_CUR);

跳到当前位置往后100个字节

fseek(fp,100,SEEK_CUR); 

fseek不宜频繁使用

在物理上,硬盘,U盘等外部存储器属于“慢速存储设备”,不能频繁的读写。
1.速度慢,效率低;
2.降低设备的使用寿命

在fseek的时候,每一次fseek都要移动物理“磁头”,因而不能频繁的fseek,以免损坏物理设备。
通常的做法,一次性读取一批数据到内存,然后在内存中处理数据。

注意:一般来说,读取4个字节和读取4096个字节,对于硬盘来说所需要的操作是相同的。因为硬盘一般单次读写的最小单位是几K,比如4096字节。

注意:同时读一个文件是允许的,但同时写一个文件是不可以的。

原创粉丝点击