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

时间:2022-10-07 21:00:56

 今天工作的时候,遇到一个需求,需要分别统计多个小文件(小于 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。

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