C ++从下到上读取文件

时间:2010-02-01 16:34:52

标签: c++ parsing

我需要解析一个非常大的文件,所以一次将它读入内存是不理想的。文件的结构方式,如果我可以从eof开始直到开头,那将会容易得多。有没有人有这样做的好方法?我正在使用Visual Studio 2008和C ++。感谢

4 个答案:

答案 0 :(得分:7)

如果您的操作系统支持它,请考虑使用内存映射文件。然后,您可以将文件内容视为一个非常大的字节数组,操作系统根据需要管理将数据存入内存(并释放它)。

答案 1 :(得分:1)

在每次读/写之后,不可能使位置“递减”而不是递增。这就是为什么你只有EOF,而不是SOF。唯一的方法是在每次读取或写入后调用fseek / seekg()/ seekp()来撤消位置更改,但这将非常慢。

答案 2 :(得分:1)

首先以相反的顺序存储文件。

答案 3 :(得分:0)

如果你打算这么做很多如何创建一个反向的BufferedInputStream类 - 你可以对这个文件的每个块保存在缓冲区中的大小进行一些控制,并隐藏客户端的所有内务处理

在每个实际文件I / O保持有效之后,其他人对重新定位的说法是什么 - 这只会提高可用性,而不是性能。