2012-09-07 37 views
1

什麼是讀取文本文件的最佳方式說例如我有一個包含幾百本書的文本文件。根據這些書籍,作者可以擁有多本書籍。閱讀文本文件沒有佔用內存的最佳方式

我該如何編寫這個程序,以便在搜索或查找信息時不會將整個文件讀入內存(數組,矢量等)。假設我輸入作者姓名並找到他們寫的每本書。所以我很好奇最好的方法和最有效的方法來做到這一點。

我會用C++編寫這個代碼

+0

如果您正在搜索作者的所有書籍,您將不得不加載整個文件(作爲最壞的情況) – Chris

+0

當您需要數據庫時,不要使用文本文件。你也可以在C++中使用它們,它不需要Java。以sqlite爲例。 –

回答

0

基本的答案是FileStream。所以你在磁盤上的文件中尋找一個位置,然後從那裏讀取。然而,在這一點上,你將會非常受限於磁盤io,並且你的文件必須符合某種結構,除非你想在每次你想找到某個東西時從開始到目標讀取。即它必須以作者的順序,即使可以接受也意味着對其他東西進行搜索將會非常低效。

經典的解決方法就是索引文件。 因此,books.dat會有一個相關的authors.idx,它可能是作者和標題的列表,最好按作者排序。 然後你有titles.idx這是Title和book在books.dat中的起始位置。 文件中的下一個標題會給你這本書的長度。

當然,你必須保持這兩個文件。如果應用程序沒有編輯該文件,那麼使用uo來創建您需要的索引將是一個好方法。