Qt超大文本文件读取

Qt读取,显示几百M甚至几个G的超大文本文件时,调用QFile::open()读取,容易出现加载卡死。

Maps size bytes of the file into memory starting at offset. A file should be open for a map to succeed but the file does not need to stay open after the memory has been mapped. When the QFile is destroyed or a new file is opened with this object, any maps that have not been unmapped will automatically be unmapped.

The mapping will have the same open mode as the file (read and/or write), except when using MapPrivateOption, in which case it is always possible to write to the mapped memory.

Any mapping options can be passed through flags.

Returns a pointer to the memory or 0 if there is an error.

Note: On Windows CE 5.0 the file will be closed before mapping occurs.

See also unmap().

map()的意思就是将文件从offset位置开始,到size字节的数据映射到内存中。

QFile file(fileName);
file.open(QIODevice::ReadWrite );
uchar* fPtr = file.map(0, file.size());//映射文件,注意这里的file.size()如果大于系统的虚拟内存,就要对文件分块映射
                                   //其实对于大文件一般都是进行分块映射的。
if(fPtr)
{
     //do something   to fPtr
    
     file.unmap(fPtr);
}
 
file.close()

你可能感兴趣的:(qt,开发语言)