博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA来读取大文本文件
阅读量:5980 次
发布时间:2019-06-20

本文共 1744 字,大约阅读时间需要 5 分钟。

hot3.png

最近工作中用到文本分析,有的文本足足有好几个G,一次性加载的内存中肯定不合适,所以在读取文件时使用缓冲区来分批读取文件

 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;public class ReadBigFile { public static void main(String[] args) throws Exception {  readBigTxt(); } private static void readBigTxt() {  //原文件路径  String filePath = "E:/BaiduYunDownload/dict.dic";  //输出的文件路径  String outputFile = "E:/BaiduYunDownload/dict2.dic";  File file = new File(filePath);  BufferedInputStream bis = null;  BufferedReader in = null;  FileWriter fw = null;  try {   bis = new BufferedInputStream(new FileInputStream(file));   //每次读取10M到缓冲区   in = new BufferedReader(new InputStreamReader(bis, "UTF-8"),     10 * 1024 * 1024);   //输出的文件   fw = new FileWriter(outputFile);   int count = 0;   while (in.ready()) {    //当count>20000的时候退出循环,只是测试,不需要读取太多行数据    if (count > 20000) {     break;    }    String line = in.readLine();    fw.append(line + "\n");    count++;   }  } catch (Exception e) {   // TODO Auto-generated catch block   e.printStackTrace();  } finally {   try {    if (in != null) {     in.close();    }   } catch (IOException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   try {    if (fw != null) {     fw.flush();     fw.close();    }   } catch (IOException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   try {    if (bis != null) {     bis.close();    }   } catch (IOException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }  }  System.out.println("文件输出完成"); }}

为了测试,从网盘上把以前破解WIFI密码时用的字典下载了下来,文件有10G,读取时完全没有问题,机器没有出现卡顿现象。

转载于:https://my.oschina.net/857359351/blog/670705

你可能感兴趣的文章
MySQL备份之分库分表备份脚本
查看>>
Java 与 Netty 实现高性能高并发
查看>>
SurfControl人工智能新突破 领跑反垃圾邮件
查看>>
一个动态ACL的案例
查看>>
openstack 之 windows server 2008镜像制作
查看>>
VI快捷键攻略
查看>>
漫谈几种反编译对抗技术
查看>>
CMD 修改Host文件 BAT
查看>>
android幻灯片效果实现-Gallery
查看>>
实现Instagram的Material Design概念设计
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>
miniWindbg 功能
查看>>
CF772E Verifying Kingdom
查看>>
第二次冲刺 第七天
查看>>
测试驱动开发
查看>>
【Udacity】线性回归方程 Regression
查看>>