java 缓存教程_Java基础教程——缓冲流
缓冲流
“缓冲流”也叫“包装流”,是对基本输入输出流的增强:
字节缓冲流: 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基础教程——缓冲流相关推荐
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- hkt java 怎么转换_Java基础教程——转换流
转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...
- java io流 教程_Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...
- java数据成员_Java基础教程之对象的方法与数据成员
在Java基础教程之从Hello World到面向对象一文中,我们初步了解了对象(object).对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class) ...
- java 反射教程_Java基础教程——反射机制
Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...
- java多线程教程_java 基础教程之多线程详解及简单实例
java 多线程详解 在这篇文章里,我们关注多线程.多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性.如何创建线程.线程的状态切换以及线程通信. 线程是操作系统运行的基本单位,它 ...
- java jdk使用教程_Java基础教程——安装JDK
使用[jdk-8u144-windows-x64.exe] 下载地址: 安装后测试:打开cmd,输入[java -version] C:\Users\Administrator>java -ve ...
- java线程池教程_Java基础教程——线程池
启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...
- java scanner 类_Java基础教程——Scanner类
Scanner属于java.util包. java.util包是Java内置的一个工具包,其中包含一系列常用的工具类,如处理日期.日历.集合类: 如果要使用到该包中的类,必须显式引入包名:import ...
最新文章
- TCP/IP 广播的发送和接收
- 作图像处理时常用的C/C++语句积累!
- mpls ldp lsp建立过程——Vecloud
- python messagebox输出_python 3.4 中原来的tkinter组件的tkMessageBox变成啥了?
- c++ 0.你好,世界
- POJ - 2135 Farm Tour(最小费用最大流)
- 百度地图API : 修改marker图标(icon)
- Site24x7 为Teams提供可智能 DevOps
- LeetCode之最大回文串--动态规划
- 基于深度卷积神经网络的农作物病害识别
- python—IFrame:在jupyter notebook中展示某个网页的情况
- 39、【华为HCIE-Storage】--对象存储原理
- 外卖返利微信小程序源码
- Quartus II 13.1 出现 ‘‘can‘t find design entity <Filename>‘‘ 问题的解决方法
- 转载:技术大停滞——范式春梦中的地球工业文明2:科技利益集团鼓吹的范式春梦—所谓的技术大爆炸
- 万年历单片机C语言报告,C语言单片机万年历系统设报告优秀文档.doc
- 腾讯又一长达 8 年的服务下架。。。
- 系统非功能需求(质量属性)
- UE4 Gameplay框架浅析笔记
- 类 习题 java_Java类练习一则