您现在的位置是:首页 > 正文

Java读取输入流和文件内容——BufferedReader

2024-02-01 02:26:41阅读 2


Java不像C那样直接用 scanf 即可从控制台读入数据,读取数据很麻烦。这里推荐 BufferedReader ,可以从 控制台文件 中读取数据。需要 import java.io.BufferedReaderimport java.io.InputStreamReader

从控制台读取数据

readline() 方法

一次可以读取一行,以换行符作为一行的结束(返回的字符串不包括换行符),然后继续往下读。

捕获异常

如果不使用 throw,则可以使用 try-catch 语句,不过需要注意:catch的是 IOException,也可以是 Exception
只不过 Exception 是各种 Exception 的父类,包括 IOException, NumberFormatException 等等,范围比较宽泛。(仍然推荐具体的IOException

  • 一般情况下,先捕获较为具体的 Exception ,然后再是总的 Exception

1. 代码示例:只读一行

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
	String data = br.readline();
} catch (IOException e) {
	e.printStackTrace();
}

2. 代码示例:读取多行
这里注意读取格式,只要读取一行后,就不会再读取这一行了,所以不能直接用 br.readline() != null 来判断,需要先存到一个变量,再与null进行比较

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String a = null;
try {
	while ((a = br.readline()) != null) {
		System.out.println(a);
	}
catch (IOException e) {
	e.printStackTrace();
}

读取文件内容

BufferedReader的参数为FileReader,顾名思义,是读文件用的
可以用readLine一行行地读取
参考:How to read a file line by line
BufferedReader API

try {
	BufferedReader br = new BufferedReader(new FileReader("file.txt"));
	String line;
	while ((line = br.readLine()) != null) {
		System.out.println(line);
	}
} catch (IOException e) {
	e.printStackTrack();
}

关于 try-catch 语句的拓展

try-catch 中的变量有作用域,在该语句中定义的变量是不能拿到语句外使用的,所以需要在语句外定义变量,然后在 try-catch 中修改

网站文章

  • Python使用定时任务

    Python使用定时任务

    【代码】Python使用定时任务。

    2024-02-01 02:26:33
  • 计算机卸载目录不让它显示,电脑删除文件时提示“无法删除文件夹 目录不是空的”怎么办?...

    计算机卸载目录不让它显示,电脑删除文件时提示“无法删除文件夹 目录不是空的”怎么办?...

    电脑使用久了之后会发现系统中存在很多没用的文件夹,此时最简单的方法就是直接删除,但是有时会在删除文件夹的时候出现“无法删除文件夹 目录不是空的”的提示,这是什么问题呢?现在本文就给大家分析该问题的原因...

    2024-02-01 02:26:27
  • 正向代理与反向代理通俗理解

    关于正向代理以及反向代理的理解。特别通俗,一看就懂。

    2024-02-01 02:26:00
  • MySQL if else的格式_mysql if--else

    MySQL if else的格式_mysql if--else

    case具有两种格式。简单case函数和case搜索函数。--简单case函数case sexwhen '1' then '男'when '2' the...

    2024-02-01 02:25:55
  • Js - 模板字面量

    背景 参考资料 JavaScript高级程序设计(第4版) ES6指北【7】——从回调地狱到Promise和async/await JS异步编程之Promise详解和使用总结

    2024-02-01 02:25:51
  • Git和Bitbucket入门之代码上传

    作为一名代码渣,虽然代码写得很烂,但多多少少也写了些了。听说大牛们都在用Bitbucket,瞻仰代码时却连git clone都不会也有点说不过去了,因此,我要入门!参考:http://blog.jobbole.com/53573/ (中文) https://confluence.atlassian.com/bitbucket/bitbucket-cloud-documen

    2024-02-01 02:25:21
  • MySQL在Mybatis新增后返回主键

    通过Mybatis将数据新增到MySQL时,有时需要获取到当前新增的数据的主键。尤其是主子表的数据在新增时,字表需要保存主表的主键作为外键。

    2024-02-01 02:25:16
  • Gin 从零开始搭建gin项目框架

    Gin 从零开始搭建gin项目框架

    欢迎大家访问我的博客http://blog.ayla1688.cool 原文连接http://blog.ayla1688.cool/archives/413.html 一、创建项目 新建文件夹 tes...

    2024-02-01 02:25:09
  • Java String常用方法

    Java String常用方法

    2024-02-01 02:25:00
  • nacos 入门(1)

    https://blog.csdn.net/u010046908/article/details/85260717转载于:https://www.cnblogs.com/maohuidong/p/11505047.html

    2024-02-01 02:24:32