参考:
有一个1G大小的一个文件,内存限制大小是10M,有序返回频数最高的50个词,该怎么做?
網上有很多該問題的解決方案,都是用分而治之的思想,提到了遍曆整個文件。
那麼我的問題是:
如果單純地逐行讀取大文件,算是把1G文件全都加載進內存嗎?
或者說是讀取大於內存的文件應該怎麼讀?
伊谢尔伦2017-04-18 10:57:16
try (BufferedReader in = new BufferedReader(new FileReader(file))) {
String line;
while ((line = in.readLine()) != null) {
// parse line
}
}
file再大,只要每一行的長度有限,整個檔案讀完會需要不少的時間,但不會佔用太大的記憶體。
怪我咯2017-04-18 10:57:16
內存就好比草稿紙,寫滿一篇就翻篇。 用過、沒用的數據就丟掉了。
簡單舉例,創建一個變數 buff,設定好它的大小,打開檔案流往裡填,填滿以後查你要的內容,查到就統計到另外一個變數裡計數。 然後清空buff,繼續之前讀取的位置再次裝載內容… 直到讀取完畢,統計也就完成了。