一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 完美解決java讀取大文件內存溢出的問題

完美解決java讀取大文件內存溢出的問題

2020-12-13 20:10echoty Java教程

下面小編就為大家帶來一篇完美解決java讀取大文件內存溢出的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. 傳統方式:在內存中讀取文件內容

讀取文件行的標準方式是在內存中讀取,Guava 和Apache Commons IO都提供了如下所示快速讀取文件行的方法:

?
1
2
Files.readLines(new File(path), Charsets.UTF_8);
FileUtils.readLines(new File(path));

實際上是使用BufferedReader或者其子類LineNumberReader來讀取的。

傳統方式的問題: 是文件的所有行都被存放在內存中,當文件足夠大時很快就會導致程序拋出OutOfMemoryError 異常。

問題思考:我們通常不需要把文件的所有行一次性地放入內存中,相反,我們只需要遍歷文件的每一行,然后做相應的處理,處理完之后把它扔掉。所以我們可 以通過行迭代方式來讀取,而不是把所有行都放在內存中。

2. 大文件讀取處理方式

不重復讀取與不耗盡內存的情況下處理大文件:

(1)文件流方式:使用java.util.Scanner類掃描文件的內容,一行一行連續地讀取

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FileInputStream inputStream = null;
Scanner sc = null;
try {
 inputStream = new FileInputStream(path);
 sc = new Scanner(inputStream, UTF-8);
 while (sc.hasNextLine()) {
  String line = sc.nextLine();
  // System.out.println(line);
  }
}catch(IOException e){
  logger.error(e);
}finally {
  if (inputStream != null) {
  inputStream.close();
  }
  if (sc != null) {
    sc.close();
   }
}

該方案將會遍歷文件中的所有行,允許對每一行進行處理,而不保持對它的引用。總之沒有把它們存放在內存中!

(2)Apache Commons IO流:使用Commons IO庫實現,利用該庫提供的自定義LineIterator

?
1
2
3
4
5
6
7
8
9
LineIterator it = FileUtils.lineIterator(theFile, UTF-8);
try {
 while (it.hasNext()) {
 String line = it.nextLine();
 // do something with line
  }
} finally {
 LineIterator.closeQuietly(it);
}

 該方案由于整個文件不是全部存放在內存中,這也就導致相當保守的內存消耗。

以上這篇完美解決java讀取大文件內存溢出的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/echoty/p/7326827.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片a级放荡的护士hd | 欧美日韩亚洲国内综合网香蕉 | 久久精品一区二区三区资源网 | 粗又长好猛好爽视频 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 免费看又黄又爽又猛的视频软件- | 污到你怀疑人生 | 美女的让男人桶爽网站 | 紧身短裙女教师波多野 | 男人疯狂擦进女人下面 | 手机跑分排行最新排名 | 国产欧美久久久精品影院 | 沉香如屑西瓜视频免费观看完整版 | 十大免费b2b网站 | 柔术一级毛片 | 久久久久国产一级毛片高清片 | 日韩一级精品视频在线观看 | 太紧太深了受不了黑人 | 国产成人理在线观看视频 | 国产精品永久免费视频观看 | chinese国产打屁股 | 2019年国产高清情侣视频 | www.俺去啦 | 男人香蕉好大好爽视频 | 国模大胆一区二区三区 | 亚洲国产99999在线精品一区 | 欧美18一videos极品 | 国产激情久久久久影院小草 | 久9视频这里只有精品123 | 人人精品久久 | 四虎影视永久免费视频观看 | 天天综合亚洲 | 久久精品AV一区二区无码 | 美女认你摸 | 午夜久久久久久网站 | 亚洲精品国产在线网站 | pornohd老师18| 精灵之森高清在线 | 国产福利在线观看第二区 | 国产人成激情视频在线观看 | 四虎在线最新地址公告 |