IO流学习之字符流(三)
IO流之字符流缓冲区:
概念:
流中的缓冲区:是先把程序需要操作的数据保存在内存中,然后我们的程序读写数据的时候,不直接和持久设备之间交互,而改成和内存中的数据进行交互。
缓冲区:它就是临时存储数据,当我们需要操作数据的时候,直接不是面对的是真实保存数据的终端,而是已经把数据缓存起来的那个容器。
字符流缓冲区:是为了高效而设计的。内部维护了一个数组,真正的读写依赖的普通的字符流。
1、BufferedReader类:

常用方法:

字符流缓冲区输入数据步骤:
- 指定文件位置
- 创建字符流输入对象
- 创建缓存区对象
- 调用方法进行读取数据
- 关闭资源
代码案例:
代码:
package InputOutput; import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException; public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
// 指定文件路径
String path = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\BufferedReader.txt";
// 创建字符输入流
FileReader reader = new FileReader(path);
// 创建字符输入流缓冲区
BufferedReader rb = new BufferedReader(reader);
String flag = null;
// readLine一行一行读取文件
while ((flag = rb.readLine()) != null) {
System.out.println(flag);
}
rb.close();
// 流程成功输出Success
System.out.println("Success");
}
}
重要方法:ReadLine()

2、BufferedWriter类

常用方法:

代码案例:
代码:
package InputOutput; import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; public class BufferedWriterDemo {
public static void main(String[] args) throws IOException {
// 指定文件位置
String path = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\BufferedWriter.txt";
// 创建字符输出流
FileWriter writer = new FileWriter(path);
// 创建字符输出流缓冲区
BufferedWriter bw = new BufferedWriter(writer);
// 写入
for (int i = 0; i < 4; i++) {
bw.write("test :" + i);
//newLine()实现换行
bw.newLine();
}
//关闭资源
bw.flush();
bw.close();
// 流程成功输出Success
System.out.println("Success");
}
}
3、字符流缓冲区实现文档复制:
代码案例:
package InputOutput; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; //字符输入流和输出流缓冲区实现复制文件
public class BufferReaderWriter {
public static void main(String[] args) throws IOException {
// 指定输入流文件位置
String path1 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\BufferedReaderCopy.txt";
// 指定输出流文件位置
String path2 = "E:\\JavaCodeDemo\\InputOutput\\filewriter\\BufferedWriterCopy.txt";
// 创建字符输入流
FileReader reader = new FileReader(path1);
// 创建字符输出流
FileWriter writer = new FileWriter(path2);
// 想追加写入就加上true
// FileWriter writer = new FileWriter(path2,true);
// 创建输入缓冲区
BufferedReader br = new BufferedReader(reader);
// 创建输出缓冲区
BufferedWriter bw = new BufferedWriter(writer);
String flag = null;
while ((flag = br.readLine()) != null) {
bw.write(flag);
bw.newLine();
bw.flush();
}
// 关闭资源
bw.close();
br.close();
// 流程成功输出Success
System.out.println("Success");
}
}
注意:因为缓冲区的Close方法会自动调用字符流的Close方法,因此最后关闭资源只需要关闭缓冲区的Close()方法即可!
IO流学习之字符流(三)的更多相关文章
- IO流学习之字符流(二)
用字符流完成文档的复制: 测试文档: 代码1: package InputOutput; import java.io.FileReader; import java.io.FileWriter; i ...
- IO流学习之字符流(一)
IO流(Input/Output) 简介: 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数 ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- Java IO 转换流 字节转字符流
Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
第一讲 IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...
- java IO的字节流和字符流及其区别
1. 字节流和字符流的概念 1.1 字节流继承于InputStream OutputStream, 1.2 字符流继承于InputStreamReader OutputStre ...
- IO(二)----字符流
计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此,从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符层次的编码和解码. 常见的码表 ASC ...
- javaio学习笔记-字符流类(1)
1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...
- javaio学习笔记-字符流类(2)
1.java.io包中的字符流类-FileReader和FileWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; FileReader ...
随机推荐
- throw throws区别
1.throws是在方法上对一个方法进行声明,而不进行处理,向上传,谁调用谁处理: 格式: 权限修饰符 返回值类型 方法名(参数列表) throws Exception1,Exception2...{ ...
- Unity酱~ 卡通渲染技术分析(二)
前面的话 上一篇Unity酱~ 卡通渲染技术分析(一) 写了CharaMain.cginc,服装的渲染是怎么实现的.这篇来分析一下头发跟皮肤的实现 头发 本来以为unitychan的头发会有各向异性的 ...
- Hello Rust!
准备工作 Rust是系统编程语言,会经过传统的编译.链接.生成可执行文件等过程.它依赖c/cpp的编译环境,需要提前安装c/cpp开发环境,比如安装gcc及其依赖等. 安装(macOS / Linux ...
- Webpack之optimization.splitChunks代码分割插件的配置
SplitChunkPlugin插件配置参数详解 对引入的库代码(例如:lodash.jQuery等)进行代码的分割进行优化 若配置时只写chunks:"all",其余则为默认配置 ...
- centos7搭建SVN并配置使用http方式访问SVN服务器
一.检查SVN是否安装 centos7系统自带SVN # rpm -qa subversion [root@localhost ~]# rpm -qa subversion subversion--. ...
- Vue 路由&组件懒加载(按需加载)
当打包构建应用时,Javascript 包会变得非常大,影响页面加载速度.使用Vue路由懒加载和组件懒加载可以提升页面加载速度,减少白屏时间,提升用户体验. 用法有如下三种:(路由懒加载与组件懒加载用 ...
- C# 小游戏-拼图魔方【Game Puzzle】
工作闲暇之余去逛了逛CodeProject,刚好现有项目主要用到就是winform,浏览了下照片,找到上周带着蛋挞打疫苗回家的照片,于是新生一记,如何把这些图片玩起来~ 80后应该都有印象,小时候有种 ...
- python学习------文件的读与写
f=open("yesterday","r",encoding="utf-8") #文件句柄 data=f.read() data2=f.r ...
- 简单了解css3样式表写法和优先级
css3和css有什么区别?首先css3是css(层叠样式表)技术的升级版本,而css是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. ...
- python+selenium自动化测试,浏览器最大化报错解决方法
此处以谷歌浏览器为例 [问题1]缺少chrome驱动,webdriver调用谷歌浏览器的时候就报错了,如下图: [原因分析]缺少谷歌驱动程序 [解决办法] 1.查看本地安装chrome浏览器版本 2. ...



