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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值