今天想到的一个另类的读文件的方法

 今天工作的时候,遇到一个需求,需要分别统计多个小文件(小于 4K)的行数.

分析了一下File这个结构体,想到了一个另类的读文件的办法.

大家都知道,当读取一个文件的时候,其实是操作系统先将文件中的部分内容一次性的载入内存中,再从这个内存读取内容.如果遇到内存中的内容读完了,操作系统会再去将文件中新的内容载入内存,再在这块内存中完成读取操作.

而File这个结构体,包括以下字段:

struct File

{
        char *_ptr;     //指向当前读取内容的地址
        int   _cnt;       //文件中剩余字节数
        char *_base; //文件头在内存中的地址
        int   _flag;     //文件操作的mode
        int   _file;
        int   _charbuf;
        int   _bufsiz;  //缓冲区大小
        char *_tmpfname;
};

 

而在vs2008的环境下,bufsiz等于一个页面的大小,也就是4kB。

知道了这些,我们可以利用这个结构体中的指针,来完成文件内容的读取了。当然,只是限于小文件。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值