JavaNIO实现按行读取文件操作

在Java编程中,文件操作常常是必不可少的步骤。在对文件进行操作时,按行读取文件是一个常见需求。Java提供了多种方法实现按行读取文件,其中一种方法是使用JavaNIO。

JavaNIO实现按行读取文件操作

JavaNIO是Java New IO的简称,是Java SE 1.4版本引入的一种新的IO API。相比传统的IO API,JavaNIO提供了更加强大、灵活和高效的IO操作方式。在使用JavaNIO实现按行读取文件操作时,可以使用BufferedReader和CharBuffer两个类。

BufferedReader是Java IO中的一个类,可以用来读取字符流,也可以用来读取字节流。在JavaNIO中,BufferedReader可以用来创建一个可读取的通道。通过BufferedReader获取到通道后,再使用CharBuffer类来按行读取文件中的内容。

CharBuffer是JavaNIO中的一个类,它是一个字符缓冲区。在使用CharBuffer时,需要先将文件中的内容读取到CharBuffer中,然后再按行读取CharBuffer中的内容。

下面是使用JavaNIO实现按行读取文件操作的示例代码:

import java.io.*;

import java.nio.*;

import java.nio.channels.*;

public class ReadFileByLineWithJavaNIO {

private static final int BUFFER_SIZE = 1024;

public static void main(String[] args) {

String filePath = \file.txt\ try {

FileInputStream fileInputStream = new FileInputStream(filePath);

FileChannel fileChannel = fileInputStream.getChannel();

ByteBuffer byteBuffer = ByteBuffer.allocate(BUFFER_SIZE);

while (fileChannel.read(byteBuffer) > 0) {

byteBuffer.flip();

CharBuffer charBuffer = Charset.defaultCharset().decode(byteBuffer);

String[] lines = charBuffer.toString().split(\r?\\n\ for (String line : lines) {

System.out.println(line);

}

byteBuffer.clear();

}

fileInputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

在以上示例代码中,首先定义了一个BUFFER_SIZE常量,这个常量表示读取文件时缓冲区的大小,一般设置为1024即可。

然后通过FileInputStream获取文件输入流,再通过getChannel方法获取文件通道。接着创建ByteBuffer对象用于存储文件内容。

在while循环中,使用fileChannel.read方法读取文件内容到ByteBuffer中。当读取到内容时,执行byteBuffer.flip()方法以便能够从ByteBuffer中读取内容。之后使用Charset.defaultCharset().decode方法将ByteBuffer中的内容转换为CharBuffer。

然后使用CharBuffer.toString().split方法将CharBuffer中的内容按行分割,然后遍历分割后得到的字符串数组,输出每一行文件内容。最后执行byteBuffer.clear()方法以便可以继续读取文件中的内容。

可以看到,使用JavaNIO实现按行读取文件操作非常简单。通过以上方法,可以在读取文件时节省空间和时间,提高效率。
本文部分代码转自:https://www.wodianping.com/java/2023-08/251792.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值