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