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流学习之字符流(三)的更多相关文章

  1. IO流学习之字符流(二)

    用字符流完成文档的复制: 测试文档: 代码1: package InputOutput; import java.io.FileReader; import java.io.FileWriter; i ...

  2. IO流学习之字符流(一)

    IO流(Input/Output) 简介: 流是一种抽象概念,它代表了数据的无结构化传递.按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列.从流中取得数据的操作称为提取操作,而向流中添加数 ...

  3. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝

    接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...

  4. Java IO 转换流 字节转字符流

    Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| Fil ...

  5. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  6. java IO的字节流和字符流及其区别

    1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStre ...

  7. IO(二)----字符流

    计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此,从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符层次的编码和解码. 常见的码表 ASC ...

  8. javaio学习笔记-字符流类(1)

    1.java.io包中的字符流类-BufferedReader和BufferedWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; In ...

  9. javaio学习笔记-字符流类(2)

    1.java.io包中的字符流类-FileReader和FileWriter: BufferedReader:缓存的输入字符流; BufferedWriter:缓存的输出字符流; FileReader ...

随机推荐

  1. Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别

    昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错.链接命令大概是这样的: [root@typecodes tcpmsg]# g ...

  2. VFP9利用_GdiPlus类处理图片分辨率及缩放

    VFP利用GDI来处理图片,已经不是一件太难的事了.GdiPlus类就是专门来干这事的,有关其属性等请参考其它资料.下面将处理图片缩放及分辨率的代码示例贴出来.这些代码都是很久以前的了,由于新冠宅家无 ...

  3. 持续集成:jenkins集合

    持续集成:jenkins集合 jenkins(一):   持续集成和Jenkins简介 jenkins(二):   Jenkins的安装 jenkins(三):   Jenkins的应用场景和job ...

  4. 【重新整理】log4j 2的使用

    一 概述 1.1 日志框架 日志接口(slf4j) slf4j是对所有日志框架制定的一种规范.标准.接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用(如log ...

  5. Spring MVC系列之JDBC Demo(SpringBoot)(七)

    前言 前面我们了解了Spring MVC的基本使用,其实和.NET或.NET Core MVC无异,只是语法不同而已罢了,本节我们将和和数据库打交道,从最基础的JDBC讲解起,文中若有错误之处,还望指 ...

  6. 一个sql

    一个小功能,sql里面用到了一些玩法,记录一下~ SELECT id, code, path, (1) AS type FROM department WHERE path LIKE CONCAT( ...

  7. python函数定义中引用外部变量的一个问题

    如果在函数定义的默认值中引用了一个外部变量,如下所示 x = 3 def func(a = x): print(a, x) 那么a的默认值就会是3, 但是print语句中的x会是调用时的x值 lamb ...

  8. js+vue、纯js 按条件分页

    听说大牛都从博客开始的... 人狠话不多,翠花上酸菜代码: 有注解基本上都看的懂!但是自己还是要注意以下几点,免得以后再浪费时间. #.vue 中监听事件 v-on:change=“vueChange ...

  9. android 华为、魅族手机无法打印 Log 日志的问题

    最近使用魅族真机测试 App 时,发现 LogCat 不显示项目工程中通过Log.d()和Log.v()打印的 debug 和 verbose 级别的日志,甚是奇怪,通过 debug 模式断点调试也没 ...

  10. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片

    场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...