前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaNIO实现按行读取文件操作

JavaNIO实现按行读取文件操作

作者头像
用户10354340
发布2023-08-07 17:37:52
3520
发布2023-08-07 17:37:52
举报
文章被收录于专栏:嗷呜大嘴狼

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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档