java 快速读文件_java快速读取文件

如何优雅读取文件,java想简单读写一个文件都要上10行代码。幸好guava和apache commons 都有提供简单操作文件工具。

简单介绍读取文件最后一行、读取文件第一行、读取大文件、往大文件追加内容、按行读取等

下面部分使用apache commons io为例:

可能你需要导入:

commons-io-2.4.jar

guava-23.5-jre.jar

小文件 - 写入文件File file = new File("C:/Users/john/Desktop/111.txt");

FileUtils.write(file, "你好!\r\n很高兴认识你!", "UTF-8");

小文件 - 读取文件

按行读取,一次性所有行(文件或行大于虚拟机的内存,内存溢出)File file = new File("C:/Users/john/Desktop/111.txt");

List lines = FileUtils.readLines(file, "UTF-8");

System.out.println(lines);

按文件读取 - 一次性读取文件所有内容(文件大于虚拟机的内存,内存溢出)File file = new File("C:/Users/john/Desktop/111.txt");

String content = FileUtils.readFileToString(file, "UTF-8");

System.out.println(content);

大文件或小文件 - 追加内容

往文件追加内容 - 尾部追加File file = new File("C:/Users/john/Desktop/111.txt");

FileUtils.write(file, "我也很高兴认识你!", "UTF-8", true);

大文件或小文件 - 读取文件

当文件很大上了G级等,如果把文件全部读取到内存中,分分钟内容溢出,报 java.lang.OutOfMemoryError 错。

commons io 提供了 LineIterator 来解决这个问题。

读取文件 - 行读取(行大于虚拟机的内存,内存溢出)File file = new File("C:/Users/john/Desktop/111.txt");

LineIterator lineIterator = null;

try {

lineIterator = FileUtils.lineIterator(file);

while (lineIterator.hasNext()) {

String line = lineIterator.nextLine();

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

LineIterator.closeQuietly(lineIterator);

}

读取文件 -  读取第一行(行大于虚拟机的内存,内存溢出)File file = new File("C:/Users/john/Desktop/111.txt");

LineIterator lineIterator = null;

try {

lineIterator = FileUtils.lineIterator(file);

if(lineIterator.hasNext()){

String line = lineIterator.nextLine();

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

LineIterator.closeQuietly(lineIterator);

}

读取文件 - 读取最后一行(行大于虚拟机的内存,内存溢出)File file = new File("C:/Users/john/Desktop/111.txt");

RandomAccessFile raf = null;

try {

raf = new RandomAccessFile(file, "r");

long len = raf.length();

long pos = len - 1;

while (pos > 0) {

pos--;

raf.seek(pos);

if (raf.readByte() == '\n') {

String row = new String(raf.readLine().getBytes("ISO-8859-1"), "UTF-8");

System.out.println(row);

break;

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (raf != null) {

try {

raf.close();

} catch (Exception e2) {

}

}

}

相关包:

commons-io

commons-io

2.4

com.google.guava

guava

23.5-jre

原创文章,转载请注明出处:https://www.weizhixi.com/article/81.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业双11业绩增长156% 、成交额突破151亿元...... 这背后是阿里云数据中台的场景赋能

红星美凯龙天猫数字化卖场累计成交金额突破151.52亿元;杜蕾斯全网销售额突破1.7亿元,天猫官方旗舰店销售额同比增长105%;滴露全网销售额突破1.8亿元,天猫官方旗舰店销售额同比增长156%;波司登首铺准确率提升79%…… 在…

Gartner:2020年全球IaaS公有云服务市场增长40.7%

编辑 | 宋 慧 供稿 | Gartner 头图 | 付费下载于视觉中国 根据全球信息技术研究和顾问公司Gartner的统计结果,2020年全球基础设施即服务(IaaS)市场达到643亿美元,相比2019年的457亿美元增长40.7%。2020年亚马逊仍在IaaS市场排名第…

jmeter+mysql+set_jmeter学习指南之操作 mysql 数据库

JMeter 通过 JDBC Connection Configuration 和 JDBC Request 可以连接数据库,并进行增删改查操作,支持各种常见的数据库,本文以最常用的 MySQL 数据库为例讲解,其它数据库的使用方法类似。一、下载驱动包在使用之前,需…

如何快速实现精准的个性化搜索服务

简介: 用户行为数据如何实时的应用在搜索服务中那? 怎样在1天内就可实现【精准的个性化搜索系统】搭建那? 今天小编将通过【阿里云开放搜索】中的三大“个性化搜索算法模型”给大家详细介绍,希望给予您更多解决思路~ 一、个性化排…

写代码时发现......还得是 SpringBoot !一篇拿下

关注了很多技术类公众号的读者肯定有这样一个感受,SpringBoot相关的文章铺天盖地,并且SpringBoot相关的文章阅读量、收藏量都很高,这也从侧面反映了SpringBoot技术的火爆。一切都在证明,SpringBoot已经成为了Java程序员必备的技能…

当 TiDB 与 Flink 相结合:高效、易用的实时数仓

简介: 利用实时数仓,企业可以实现实时 OLAP 分析、实时数据看板、实时业务监控、实时数据接口服务等用途。但想到实时数仓,很多人的第一印象就是架构复杂,难以操作与维护。而得益于新版 Flink 对 SQL 的支持,以及 TiDB…

云原生时代微服务的高可用架构设计

简介: 在8月20日“阿里巴巴技术质量精品课”上,来自蚂蚁的经国分享了对云原生时代微服务的高可用架构设计的全面解析,为大家介绍了应用架构演进路径、云原生时代的技术福利、高可用架构的设计原则以及经典案例的设计。 演讲嘉宾简介&#xf…

“精耕细作”桌面云市场的锐捷,重磅发布三擎云桌面

编辑 | 宋 慧 出品 | CSDN云计算 头图 | 付费下载于IC photo 在教育行业VDI与桌面云具有优势的锐捷,仍在不断扩充自身技术与产品方案的实力。 6月30日,锐捷正式对外发布新一代云桌面解决方案——锐捷三擎云桌面解决方案。会上针对三擎云桌面的终端云化…

jpython使用_jpython的使用(Java调用python脚本)

1、导入Jarjar下载地址找到jython-installer-2.7.0.jar 包里面的jpython.jar,加载到工作目录我用的java开发工具是IDEA、JDK8、Python3.52 、执行python源码获取一个元组里面的元素import org.python.util.PythonInterpreter;public class FirstJavaScript {public …

Flink 1.11 与 Hive 批流一体数仓实践

导读:Flink 从 1.9.0 开始提供与 Hive 集成的功能,随着几个版本的迭代,在最新的 Flink 1.11 中,与 Hive 集成的功能进一步深化,并且开始尝试将流计算场景与Hive 进行整合。 本文主要分享在 Flink 1.11 中对接 Hive 的新…

双11还能创造什么新技术?

简介: 当下购物峰值不再是最大挑战,下一代技术创新将会出现在哪里? 诞生12年后,双11仍然续写答卷,也留下了问卷:当购物峰值不再是最大挑战,下一代技术创新,将会出现在哪里&#xff1…

于变局中开新局!《2021中国SaaS市场研究报告》报告发布

我国SaaS市场即将步入成熟需求,一起跟上! 中国市场数字化发展已经历了部门级信息化(2005年以前)、企业级信息化(2006-2015年)、产业级数字化(2016-2020年)三个阶段,在20…

4982亿背后的前端技术—2020天猫双11前端体系大揭秘

简介: 整体介绍一下淘系前端在今年双11的思考和沉淀。 今年双11的整体节奏从之前的“光棍节”变为“双节棍”,具体业务上也有很多变化和调整,应了阿里的土话“唯一不变的是变化”。面对这些变化,是挑战也是机会,我们要…

mysql5.7 rar_mysql5.7 压缩包版本安装

因为使用yum的库,太多依赖解决不了,所以使用压缩包版本来安装Mysql因为centos系统自带了一个mysql,但是版本非常低,是5.1的,所以先卸载通过 yum list installed 列出所有已安装的文件找到要删除的文件后,yu…

从应用开发角度认识 K8S

简介: 作者个人介绍 刘晨 Lorraine 坐标Fintech,精通持续集成与发布,曾具有全平台100应用持续部署持续发布实战经验,现在立志于成为K8S玩家。 云原生应用 我们正经历从单体应用转向分布式微服务架构应用的技术趋势。分布式微服务…

MySQL 十大常用字符串函数

作者 | 不剪发的Tony老师 责编 | 欧阳姝黎出品 | CSDN博客数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值。MySQL 为我们提供了许多用于处理和分析数据的系统函数,本文给大家介绍 10 个常用的字符串…

海口只有阳光沙滩?错,人家还是“最佳智慧城市”

简介: 作为中国最南端的省份,海南一直都是全国人民的“后花园”,也是度假的最佳选择,住海景房远海潜水、直升机观光、乘帆船出海、吃海鲜大餐等花样繁多的旅游项目成就了海南的旅游TOP1地位,海南也被游客誉为“东方夏威…

让数据中台飞起来—— Quick BI性能优化解决方案及实践

Quick BI“数据门户”在企业数据中台建设中的重要性 企业在数据中台初步建设完成以后,怎样让客户直观感受到数据中台的价值?企业决策者、各部门管理人员、业务运营人员如何通过统一的窗口,快速看到数据中台提供的数据,并利用这些数…

到底要不要报考“通信工程”?

作者 | 小枣君来源 | 鲜枣课堂“通信工程”是干嘛的通信工程,英文全称叫做Communication Engineering,是一门重要的工学基础学科。根据教育部《学位授予和人才培养学科目录设置与管理办法》,“通信工程”属于二级学科,归属于“信息…

日均调用量超13亿次,阿里达摩院研发全球首个实时翻译直播

简介: 近几年来,直播电商到处开花,但绝大多数都是国内的中文直播。如果想买外国电商主播推荐的商品,语言不通怎么办?这一难题已被阿里巴巴(下称 “阿里”)攻克,阿里速卖通是面向全球…