如何优雅读取文件,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

java 快速读文件_java快速读取文件相关推荐

  1. java逐行读取文件_Java逐行读取文件

    java逐行读取文件 Today we will look into different java read file line by line methods. Sometimes we have ...

  2. java io读取文件_java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要分为字节读取和字符读取,字节读取可以一个一个 ...

  3. java 以二进制读取文件_JAVA中读取文件(二进制,字符)内容的几种方法总结

    public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...

  4. java 分批读取文件_Java分批读取文件

    package com.Java.io.test; import java.io.File; import java.io.RandomAccessFile; import java.nio.Mapp ...

  5. java分隔符读取文件_java – 在读取文件时使用分隔符

    我几乎没有使用分隔符的经验,我需要读取一个文本文件,该文件存储多个对象,其数据以逗号(",")分隔的单行存储.然后使用单独的字符串来创建添加到arraylist的新对象. Amad ...

  6. java字节流读取文件_字节流读取文件 java的几种IO流读取文件方式

    java字节流怎么读取数据 字节流读取数据例子如下: import java.io.File;import java.io.FileInputStream;import java.io.FileNot ...

  7. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  8. php随机获取文件夹,php从文件夹随机读取文件的方法

    本文实例讲述了php从文件夹随机读取文件的方法.分享给大家供大家参考.具体实现方法如下: function RandomFile($folder='', $extensions='.*'){ // f ...

  9. python循环保存文件并循环读取文件

    python循环保存文件并循环读取文件 这里我以一个列表为例,每个列表是一个文件,数据来源于python自带的新闻文本主题分类数据. 保存代码: #%% for i in range(len(X_te ...

  10. php 读取一行文件内容,PHP文件处理—如何读取文件(一行,整个文件)

    PHP文件处理-如何读取文件(一行,整个文件) 相对打开和关闭文件来说,读写文件更复杂一些.这里主要从读取数据和写入数据两方面进行讲解. 那么在上一篇文章<PHP文件处理-打开和关闭文件> ...

最新文章

  1. mysql 隐式失误_评“MySQL 隐式转换引起的执行结果错误”
  2. 用SERVLET进行用户名和密码验证
  3. Qt中禁止调节窗口大小
  4. gdb 设置一个函数, 出现4个断点的原因
  5. 图的根节点-数据结构作业。。
  6. Intro.js轻松搞定页面引导流程
  7. HDU 3652 B-number (数位DP)
  8. 电阻参数_贴片电阻的参数标识与贴片电阻的选择
  9. 2019 十大国产开源项目来势汹汹!
  10. Matlab Tricks(十四)—— 某一行/列是否在一个矩阵中(ismember)
  11. 2017 Multi-University Training Contest - Team 7:1002. Build a tree(递归)
  12. phprpc的简单使用
  13. 基于http 构建 yum 网络源
  14. 计算机视觉方向开题,机器视觉开题报告.doc
  15. 高斯过程回归(Gaussian process regression)原理详解及python代码实战
  16. tensorflow聊天机器人python实现_代码详解|tensorflow实现 聊天AI--PigPig养成记(1)
  17. 跑步机行业研究及十四五规划分析报告
  18. android app 短信接收,Android创建简单发送和接收短信应用
  19. 企业挖角 AI 教授是不是「原罪」?
  20. 80老翁谈人生(210):方正上市前的静默期的突发事件

热门文章

  1. 40名大学生被退学,教育部表态:学生对自己不负责,就要付出代价
  2. AI算法连载04:数学基础之蒙特卡洛方法与MCMC采样
  3. Facebook传遍全球的17张励志海报
  4. android监听方法的耗时时间,Android从网络获取北京时间以及动态的监听时间
  5. mvc 怎么把后台拼接好的div写到前台_MVC 从后台页面 取前台页面传递过来的值的几种取法...
  6. 01背包问题(DFS解法)
  7. Hbase Compaction 源码分析 - CompactSplitThread 线程池选择
  8. 图像检索在高德地图POI数据生产中的应用
  9. 资深技术专家崮德在阿里管理研发团队的实践和思考
  10. 加入阿里技术团队三年,哪些习惯让我在工作上持续受益?