国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java - 讀取大于內存的大文件怎么讀?

瀏覽:87日期:2023-12-28 16:57:06

問題描述

參考: 有一個1G大小的一個文件,內存限制大小是10M,有序返回頻數最高的50個詞,該怎么做?

網上有很多該問題的解決方案,都是用分而治之的思想,提到了遍歷整個文件。

那么我的問題是:如果單純地逐行讀取大文件,算是把1G文件全都加載進內存嗎?或者說是讀取大于內存的文件應該怎么讀?

問題解答

回答1:

在這里內存就像一條管道,逐行讀是把1G文件在內存里過一遍而已,10M表示管道的粗細。所以,逐行讀是把1G文件加載進去過內存。

回答2:

try (BufferedReader in = new BufferedReader(new FileReader(file))) { String line; while ((line = in.readLine()) != null) {// parse line }}

file再大,只要每一行的長度有限,整個文件讀完會需要不少的時間,但不會占用太大的內存。

回答3:

分塊讀,每讀一個塊一個結果集,最后對結果集聚合處理文本的話,知道行數會更好

回答4:

linux上面有個指令叫做split可以并發快速把大文本分割成小的文件,然后處理就方便了呀,這種算法叫做外排序

回答5:

內存就好比草稿紙,寫滿一篇就翻篇。 用過、沒用的數據就扔掉了。

簡單舉例,創建一個變量 buff,設定好它的大小,打開文件流往里填,填滿以后查你要的內容,查到就統計到另外一個變量里計數。 然后清空buff,繼續之前讀取的位置再次裝載內容…… 直到讀取完畢,統計也就完成了。

回答6:

針對不同的系統,都會提供一個API來操作大于內存的文件,也就是將文件當做內存來處理:

內存映射

mmap

CreateFileMapping

標簽: java
相關文章:
主站蜘蛛池模板: 免费高清不卡毛片在线看 | 男人的天堂久久爱 | 中国性猛交xxxxx免费看 | 亚洲成人免费在线 | youjizz日韩| 欧美大片毛片大片 | 日本视频播放免费线上观看 | 久久国产成人午夜aⅴ影院 久久国产成人亚洲精品影院老金 | 精品亚洲福利一区二区 | 点击进入不卡毛片免费观看 | 久久网站免费 | 国产精品免费一级在线观看 | 亚洲欧美精品成人久久91 | 国产精品综合一区二区三区 | 曰本美女高清在线观看免费 | 国产一成人精品福利网站 | 亚洲欧美手机在线观看 | 暴操女人 | 国产午夜伦伦伦午夜伦 | 欧美日韩国产亚洲一区二区三区 | 波多野结衣一级片 | 成年大片免费视频播放二级 | 成年男女的免费视频网站 | 国产在线观看91精品一区 | 国产精品第五页 | 精品国产乱码久久久久久一区二区 | 国产二区自拍 | 一级成人a毛片免费播放 | 中文字幕一区在线播放 | 在线观看亚洲视频 | 久草视频精品 | 日韩免费一级a毛片在线播放一级 | 亚洲日韩中文字幕天堂不卡 | 手机在线看福利 | 亚洲美女视频一区二区三区 | 日韩欧美a级高清毛片 | 亚洲免费小视频 | 亚洲人成网站观看在线播放 | 日韩国产成人精品视频 | 日本成人在线免费观看 | 久久欧美久久欧美精品 |