缓冲流

“缓冲流”也叫“包装流”,是对基本输入输出流的增强:

字节缓冲流: BufferedInputStream , BufferedOutputStream

字符缓冲流: BufferedReader , BufferedWriter

缓冲流的基本原理:

创建流对象时,会创建一个缓冲区数组,通过缓冲区读写,减少系统IO次数,以提高读写效率。

就像送快递,快递小哥一次带一件当然慢,所以用车来运输,跑一趟可以带很多件。

以字符流为例:

|-读文件:FileReader + BufferedReader

|-写文件: FileWriter + BufferedWriter

package ahjava.p05io;

import java.io.*;

public class 字符流 {

public static void main(String[] args) {

字符流R();

字符流W();

}

static void 字符流R() {

File file = new File("testRead.dat");

// 通过文件对象创建文件读取流对象

FileReader fr;

try {

fr = new FileReader(file);

// 将文件读取流包装成缓冲读取流

BufferedReader br = new BufferedReader(fr);

String str;

while ((str = br.readLine()) != null) // 逐行读取数据

{

System.out.println(str);

}

br.close(); // 关闭流

fr.close(); // 关闭流

} catch (IOException e) {

e.printStackTrace();

}

}

static void 字符流W() {

File file = new File("testFileWriter.txt");

// 通过文件对象创建文件输出字符流对象

FileWriter fw;

try {

fw = new FileWriter(file);

// 将文件输出字符流包装成缓冲流

BufferedWriter bw = new BufferedWriter(fw);

bw.write("萨瓦迪卡");

bw.newLine(); // 换个新行

bw.write("どうぞ よろしく お愿いします");

bw.close(); // 关闭流

fw.close(); // 关闭流

} catch (IOException e) {

e.printStackTrace();

}

}

}

字节流也有包装流,试用包装流改写文件复制的代码,并测试程序效率提升的情况。

java.io.BufferedOutputStream

java.io.BufferedInputStream

java 缓存教程_Java基础教程——缓冲流相关推荐

  1. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  2. hkt java 怎么转换_Java基础教程——转换流

    转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...

  3. java io流 教程_Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...

  4. java数据成员_Java基础教程之对象的方法与数据成员

    在Java基础教程之从Hello World到面向对象一文中,我们初步了解了对象(object).对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class) ...

  5. java 反射教程_Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  6. java多线程教程_java 基础教程之多线程详解及简单实例

    java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...

  7. java jdk使用教程_Java基础教程——安装JDK

    使用[jdk-8u144-windows-x64.exe] 下载地址: 安装后测试:打开cmd,输入[java -version] C:\Users\Administrator>java -ve ...

  8. java线程池教程_Java基础教程——线程池

    启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...

  9. java scanner 类_Java基础教程——Scanner类

    Scanner属于java.util包. java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期.日历.集合类: 如果要使用到该包中的类,必须显式引入包名:import ...

最新文章

  1. TCP/IP 广播的发送和接收
  2. 作图像处理时常用的C/C++语句积累!
  3. mpls ldp lsp建立过程——Vecloud
  4. python messagebox输出_python 3.4 中原来的tkinter组件的tkMessageBox变成啥了?
  5. c++ 0.你好,世界
  6. POJ - 2135 Farm Tour(最小费用最大流)
  7. 百度地图API : 修改marker图标(icon)
  8. Site24x7 为Teams提供可智能 DevOps
  9. LeetCode之最大回文串--动态规划
  10. 基于深度卷积神经网络的农作物病害识别
  11. python—IFrame:在jupyter notebook中展示某个网页的情况
  12. 39、【华为HCIE-Storage】--对象存储原理
  13. 外卖返利微信小程序源码
  14. Quartus II 13.1 出现 ‘‘can‘t find design entity <Filename>‘‘ 问题的解决方法
  15. 转载:技术大停滞——范式春梦中的地球工业文明2:科技利益集团鼓吹的范式春梦—所谓的技术大爆炸
  16. 万年历单片机C语言报告,C语言单片机万年历系统设报告优秀文档.doc
  17. 腾讯又一长达 8 年的服务下架。。。
  18. 系统非功能需求(质量属性)
  19. UE4 Gameplay框架浅析笔记
  20. 类 习题 java_Java类练习一则

热门文章

  1. LG KF350上网设置(看图说明)
  2. powershell 批量导出Access图片(OLE对象)到文件
  3. USB至串口TTL转接设备及Console线
  4. C# ErrorProvider组件应用
  5. SpringBoot 401 Unauthorized问题解决方案
  6. Windows 10使用WSL部署Chatgpt_academic
  7. baostock证券数据集下使用LSTM模型预测A股走势
  8. 【C#语言】MDI窗体
  9. 网页不能复制文字?这几招轻松解决
  10. 利用树莓派制作智能音箱