如何使用BufferedReader循环读文件
作者:快意咖啡~ 发布时间:2022-04-20 17:32:23
标签:BufferedReader,循环,读文件
使用BufferedReader(缓存读取流)可以每次读取文件的一行。对于文件内容如果是按行为单位排列的话,则使用BufferedReader来读取文件还是比较方便的。
举例如下
1、BufferedReader读取一行
在F盘下有个txt文件,文件内容为
import java.io.*;
public class test {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("F:\\test.txt"));
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
结果为:
哈哈0
2、BufferedReader循环读每一行
import java.io.*;
public class test {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("F:\\test.txt"));
String text = null;
//读取内容为null则表示读到了文件末尾
while ((text = br.readLine()) != null) {
System.out.println(text);
}
} catch (IOException e) {
e.printStackTrace();
}
}
结果为:
哈哈0
哈哈1
哈哈2
哈哈3
哈哈4
哈哈5
哈哈6
哈哈7
哈哈8
哈哈9
3、注意细节
新手如果没不注意,容易写成:
import java.io.*;
public class test {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("F:\\test.txt"));
String text = null;
//
while (true) {
if (br.readLine() == null) {
break;
}
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
结果为:
哈哈1
哈哈3
哈哈5
哈哈7
哈哈9
原因
while (true) {
if (br.readLine() == null) {
break;
}
System.out.println(br.readLine());
}
因为在while循环中, if 语句在做判断时,其实已经读取了一行,而读取的这行没有被打印出来,所以就造成了只打印了一部分。
BufferedReader.rean(buffer)注意事项
最近遇到一个问题
BufferedReader.rean(buffer)
读取数据时,最后一行必须获取到返回值
len=BufferedReader.rean(buffer)
只能取0到len区间的数据,len之后的数据为上次读取过的数据,原因是因为buffer读取时不会清空数组。
来源:https://blog.csdn.net/weixin_44403003/article/details/106470457


猜你喜欢
- 遇到的问题!注:自定义CommentGenerator的都知道通过实现CommentGenerator接口的一些不足,毕竟只是实现了Comm
- springboot aop里的@Pointcut()的配置@Pointcut("execution(public * com.w
- 各个方法1. 得到class的成员变量首先得到object的class对象然后在class对象中用getDeclaredFields()方法
- 一、串口连接的打开与关闭串口,即COM口,在.NET中使用 SerialPort 类进行操作。串口开启与关闭,是涉及慢速硬件的IO操作,频繁
- xxx cannot be resolved to a type引言 eclipse新导入的项目经常可以
- android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloA
- 1. 建立一个实现Filter接口的类所有过滤器都必须实现javax.servlet.Filter。这个接口包含三个方法,分别为doFilt
- 异常算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCa
- Java Boolean 初始化方式1、Boolean(String boolString);以字符串的方式初始化,只有当字符串是“true
- 各位亲们可以尝试以下代码:注:这里我就只有一个html标签对来说明问题了,首部之类的东西,自己添加。<html> &n
- C#中,Image为源自 Bitmap 和 Metafile 的类提供功能的抽象基类,也就是说更通用,当我们用Image.FromFile(
- gateway版本是 2.0.11.pom结构(部分内部项目依赖已经隐藏)<dependency> &
- 在派生类中引发基类事件以下简单示例演示了在基类中声明可从派生类引发的事件的标准方法。此模式广泛应用于 .NET Framework 类库中的
- Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.op
- 删除字符串的所有标点str = str.replaceAll("[\\pP‘'“”]", ""
- 本文实例讲述了java编程实现基于UDP协议传输数据的方法。分享给大家供大家参考,具体如下:UDP协议(User Datagram Prot
- ID说明 设备唯一标识符(UDID):设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。不对第
- 本文实例讲述了Java生产者消费者模式。分享给大家供大家参考,具体如下:java的生产者消费者模式,有三个部分组成,一个是生产者,一个是消费
- 一. Window 分类应用 Window(ApplicationWindow: 对应一个 Acitivity)
- 不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今天讲的是一个大