JavaNIO实现按行读取文件操作

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

posted @ 2023-08-07 17:37  我点评开发者社区  阅读(113)  评论(0编辑  收藏  举报