JAVA读取40G左右的TXT文件初探

问题描述:现有一个txt文件pnrTest,大小为40G左右,并且知道A中每一行都是一个xml文件标准格式的内容,现在要把A中的每一行读取出来然后放到队列中去分析。

解决方案分析1

 JAVA读取40G左右的TXT文件初探_第1张图片

 JAVA读取40G左右的TXT文件初探_第2张图片

方案1设置50m的缓存去读,还是不行,最后发现这种方法只能读取2G以下的文件。

方案2:用NIO方式把大文件分成固定大小的小文件(小于2G,自己综合分析设置多大,每个文件太大容易浪费空间,太小浪费时间),然后再循环用方案1去读每个小文件。

 JAVA读取40G左右的TXT文件初探_第3张图片

2.1经过运行readLargeTextWithNIO()分割后的目录如下:

 JAVA读取40G左右的TXT文件初探_第4张图片

2.2然后再用方案1去读取D盘下temp文件夹中的所有小文件(大小为128M)。下面只列出部分代码,网上可以查到。

 JAVA读取40G左右的TXT文件初探_第5张图片

3.如果运行时报内存溢出,可以对着运行的类点击右键Run as/Run configrition设置一下就可以了。

 JAVA读取40G左右的TXT文件初探_第6张图片

 

你可能感兴趣的:(java,nio,内存溢出,读取超大文件)