JavaNIO实现按行读取文件操作

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

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

目录
相关文章
|
12天前
|
存储 弹性计算 运维
读取文件
【4月更文挑战第29天】
20 2
|
1月前
|
C语言 C++
C/C++文件读取操作
C/C++文件读取操作
|
5月前
|
C语言
从文件中读取一行
C 语言实例 - 从文件中读取一行。
35 3
|
5月前
|
XML C# 数据格式
C#读取写入文件的三种方式
最近对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试,例子在文末,可下载。
55 0
|
10月前
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
111 0
|
C语言 Python
从一个字节流中进行按行读取
从一个字节流中进行按行读取
162 0
|
移动开发 C++ Windows
C++读取文件
C++读取文件
读取文件的多种方式
读取文件的多种方式和
|
存储 easyexcel Java
实战--excel分别实现按行读和按列读(其实是按单元格读)
实战--excel分别实现按行读和按列读(其实是按单元格读)
229 0
实战--excel分别实现按行读和按列读(其实是按单元格读)
C#编程-35:写入读取文本文件
C#编程-35:写入读取文本文件