Java IO(十八) BufferedReader 和 BufferedWriter
Java IO(十八) BufferedReader 和 BufferedWriter
一、介绍
BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader 和 Writer,它们与字节缓冲流 BufferedInputStream 和 BufferedOutputStream 类似,都是为其他基础流添加缓冲功能。
- BufferedReader:字符缓冲输入流,它继承于Reader,为其他字符输入流添加一些缓冲功能,以提供单个字符,数组和字符串的高效写入。
- BufferedWriter:字符缓冲输出流,它继承于Writer,为其他祖父输出流添加一些缓冲功能。以提供字符,数组和行的高效读取。
二、构造方法
(一)、BufferedReader

(二)、BufferedWriter

三、常用API
(一)、BufferedReader

(二)、BufferedWriter

四、缓冲功能
(一)、BufferedWriter
BufferedWriter为其它输出流提供缓冲功能。创建 BufferedWriter 时,我们会通过它的构造函数指定某个输出流为参数。通过字符数组来缓冲数据,当缓冲区满或者用户调用 flush() 函数时,它就会将缓冲区的数据写入到输出流中。
(二)、BufferedReader
BufferedReader 的作用是为其它输入流提供缓冲功能。创建 BufferedReader 时,我们会通过它的构造函数指定某个输入流为参数。BufferedReader 会将该输入流数据分批读取,每次读取一部分到缓冲中;操作完缓冲中的这部分数据之后,再从输入流中读取下一部分的数据。缓冲中的数据实际上是保存在内存中,从内存中读取数据的速度更快从而提高性能。
分批读取而不一次性读取的好处:
- 缩短读取时间,提高读取性能。
- 减少内存空间占用。
五、实例
private static char[] chs = new char[]
{'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'};
public static void main(String[] args) {
write();
read();
} /**
* BufferedWriter 测试
*/
public static void write() {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("buff.txt"));
bw.write(chs);// 写入字符数组
bw.write("\n");
String str = String.valueOf(chs);// 将字符数组转成String
bw.write(str.toUpperCase());// 将小写字母变成大写字母
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (bw != null)
bw.close();
}catch (Exception e) {
e.printStackTrace();
}
}
} /**
* BufferedReader 测试
*/
public static void read() {
BufferedReader br = null;
char[] ch = new char[10];
try {
br = new BufferedReader(new FileReader("buff.txt"));
System.out.println("read : " + (char)br.read());// 读取一个字符,将int转成char
int len = br.read(ch);
System.out.println("ch : " + new String(ch));// 将读取字符数组转成String
if (!br.markSupported()) {// 若该字符流不支持标记功能,则直接退出
System.out.println("Stream not marked");
return;
}
br.mark(1024);// 标记当前位置
br.skip(24);// 跳过24个字符
System.out.println("line : " + br.readLine());// 读取该行剩余数据
br.reset();// 重置输入流到mark标记的位置
len = br.read(ch, 0, 5); // 从0位置开始读取,读取长度为5
System.out.println("read(ch, 0, 5) : " + new String(ch,0,len));
System.out.println("line : " + br.readLine());
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
if (br != null)
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
Java IO(十八) BufferedReader 和 BufferedWriter的更多相关文章
- 《java面试十八式》--引子
爪哇城中 “喂,你等等我啊”少女气喘吁吁的喊道 “大小姐,你可快点吧,报名马上就要结束了.” 这是爪哇城一年一度的大选比赛,被选上的人会留下来任职,享有名誉和金钱,所以大家都在积极准备. ...
- Java IO(八) PipedInputStream 和 PipedOutputStream
Java IO(八) PipedInputStream 和 PipedOutputStream 一.介绍 PipedInputStream 和 PipedOutputStream 是管道输入流和管道输 ...
- 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader
目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStrea ...
- Java IO--字符流--BufferedReader和BufferedWriter
从昨天开始没事情干时,决定梳理梳理Java IO流,因为觉得太混乱这个东西,妈的,咋就这么多类型,想累死谁啊,这里并不是埋怨创造者,而是气自己看着看着老跑偏,实在看不进去,太多了,想睡觉,所以现在决定 ...
- 系统学习 Java IO (十六)----这么多类,应该用哪个?
目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原 ...
- JAVA提高十八:Vector&Stack深入分析
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我们先看一个例子:栈就相当于一个很窄的木桶,我们往木桶里放东西,往外拿东 ...
- java基础(十八)----- java动态代理原理源码解析
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 静态代理 1.静态代理 静态代理:由程序员创建或特定工 ...
- 系统学习 Java IO (十二)----数据流和对象流
目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...
- 黑马程序员 Java基础<十八>---> 网路编程
--------------- ASP.Net+Android+IO开发S..Net培训.期待与您交流! --------------- 第一 概述 一.概述: 1.网络模型:OSI参考模型和TCP ...
随机推荐
- <学习笔记 之 JQuery 基础语法>
jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 库包含以下特性: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaSc ...
- SpringBoot:静态资源映射、定制404、配置icon
目录 静态资源映射规则 定制首页 定制错误页面 配置 icon 静态资源映射规则.定制首页.定制404页面.配置网站的图标 静态资源映射规则 SpringBoot中对于静态资源(css,js,img. ...
- LeetCode--Array--Container With Most Water (Medium)
11. Container With Most Water (Medium)# Given n non-negative integers a1, a2, ..., an , where each r ...
- Coursera课程笔记----C程序设计进阶----Week 4
指针(一) (Week 4) 什么是"指针" 互联网上的资源--地址 当获得一个地址,就能得到该地址对应的资源,所以可以把"网址"称为指向资源的"指针 ...
- boost在Qt中的使用
一.说明 理论上,Qt和boost是同等级别的C++库,如果使用Qt,一般不会需要再用boost,但是偶尔也会有特殊情况,比如,第三方库依赖等等.本文主要介绍boost在windows Qt(MinG ...
- Power BI Desktop心得
我是用钉钉邮箱做账号登录Power BI Desktop的.我用Power BI Desktop,做排版和统计. Power BI由Power Query和Power Pivot组成,前者有M语言,后 ...
- [hdu4631 Sad Love Story]最近点对,枚举
题意:S是平面内点的集合,初始为空,每次向集合里面加入一个点P(x,y),询问S内最近点对的距离的平方和 思路:设当前集合的答案为D,则找到集合里面横坐标在(x-√D,x+√D)内的数,用它们来更新答 ...
- HDU 2001 (水)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2001 题目大意:两个点求距离 解题思路: 套基本公式 a = √(b2 + c2); 小数点后几位的表 ...
- k8s搭建实操记录一(master)
#1)关闭CentOS7自带的防火墙服务 systemctl disable firewalld systemctl stop firewalld swapoff -a ##虚拟机要关闭交换 ...
- day04:购物车的练习(20170216)
product_list = [ ('IPhone',5900), ('Mac pro',9800), ('Bike',800), ('Watch',16000), ('Coffee',35), (' ...