我有一個非常大的文件,我需要解析,因此將其讀入內存中的所有一次是不理想的。文件結構的方式,如果我可以從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