在文本文件中,行在每行的結尾處由\ n檢測。爲此,有必要讀取整個文件,這對大文件(比如說2GB)來說是個大問題。我正在尋找一種方法來閱讀一行,而無需遍歷整個文件(儘管我知道它應該是一個複雜的過程)。映射平面文本文件
- 我知道的第一種方法是使用fseek()和offset;但這是不實際的。
- 創建鍵/值的平面文件;但我不確定是否有辦法避免將整個內容加載到RAM中(它應該像在php中讀取數組一樣)。
或者,我們可以在每行的開始處做一些數字來讀取。我的意思是,是否可以通過跳過行內容(轉到下一行)來讀取行首的第一個數字。
768| line content is here 769| another line 770| something
如果只讀取第一個數字,應讀的總數據並不多,甚至對大文件。
你可以始終在循環中逐行讀取整個文件,提取起始數字並丟棄剩餘的行。但是,您需要注意性能。對於2 GB文件,這可能需要一段時間。 –
我正在尋找的所有內容都是爲了避免逐行閱讀整個文件。 – Googlebot
您是否需要閱讀可以在行號上編制索引的特定行?如果是這樣,只需要進行二分查找。在文件中間讀取(說出)200個字符來查找行號。然後重複上述任一部分,直到您到達正確的位置。 –