我有一个非常大的文件,我需要解析,因此将其读入内存中的所有一次是不理想的。文件结构的方式,如果我可以从eof开始并开始,那将会容易得多。有没有人有这样做的好方法?我正在使用Visual Studio 2008和C++。由于C++读取文件顶部
0
A
回答
7
如果您的操作系统支持的话,可以考虑使用内存映射文件。然后,您可以将文件内容视为非常大的字节数组,操作系统会根据需要管理将数据带入内存(并释放它)。
1
这是不可能使每个读/写后的位置“减量”,而不是增量。这就是为什么你只有EOF,而不是SOF。唯一的方法是在每次读取或写入之后调用fseek/seekg()/ seekp()来撤消位置更改,但这会非常缓慢。
1
0
如果你打算这么做很多如何创建一个反向BufferedInputStream类 - 你将能够给这个措施控制文件的每个块在缓冲区中的大小,并隐藏所有内务管理客户。
什么其他人所说的关于每个实际的文件后,我重新定位/ O仍然有效 - 这只会提高可用性,而不是性能。
相关问题
- 1. 从外部文件读取参数 - C#
- 2. PHP:读取底部顶部的变量
- 3. 文件读取,顶点和adjlist
- 4. 在C中读取文件读取#
- 5. C#从读取文本文件中读取二进制文件
- 6. mysql读取带点ä/ö/(顶部)
- 7. C++读取txt文件?
- 8. C#PCL从文件读取
- 9. C++通过文件读取
- 10. objective c:读取csv文件
- 11. C# - 从JSON文件读取
- 12. isstringstream从文件读取C++
- 13. 用C读取Json文件#
- 14. 从XML文件读取C#
- 15. C++缓冲文件读取
- 16. C++逐行读取文件
- 17. 在文件中读取C++
- 18. 用C读取文件#
- 19. c#读取excel文件
- 20. C++文件读取错误
- 21. 从C++中读取文件
- 22. 从文件中读取。 C++
- 23. C++程序读取文件
- 24. C++读取CSV文件
- 25. 在C中读取文件
- 26. 用c读取Lua文件#
- 27. 读取Excel文件从C#
- 28. C编程读取文件
- 29. 读取文件在c#.net
- 30. 文件读取C#.NET
此文件是否有固定长度记录?如果是这样,考虑随机访问。 – 2010-02-01 16:43:53
@Liz - 遗憾的是没有 – Steve 2010-02-01 16:50:04
在这种情况下,你必须读取来自EOF [一定数量的字节],然后分析要多阅读。你最终会使用seek/tell/get的组合,这可能会很慢。我不知道这是否会比在整个文件中读取更好或更差。你考虑过内存映射文件吗? – 2010-02-01 17:04:08