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基础教程——转换流
转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...
- Java基础教程——打印流
打印流 打印流可以把原本输出到控制台的信息输出到文件中.PrintStream是字节打印流(还有个对应的字符打印流是PrintWriter,这里不涉及) System类中有个变量: public fi ...
- Java基础教程——字符流
字符流 字节流服务文本文件时,可能出现中文乱码.因为一个中文字符可能占用多个字节. 针对于非英语系的国家和地区,提供了一套方便读写方式--字符流. java.io.Reader java.io.Wri ...
- Java基础教程(25)--I/O
一.I/O流 I/O流表示输入源或输出目标.流可以表示许多不同类型的源和目标,例如磁盘文件.设备.其他程序等. 流支持许多不同类型的数据,包括字节.原始数据类型.字符和对象等.有些流只传递数据 ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程:JDBC编程
Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...
- Java基础教程:面向对象编程[3]
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- Java基础教程:多线程基础——线程池
Java基础教程:多线程基础——线程池 线程池 在正常负载的情况瞎,通过为每一个请求创建一个新的线程来提供服务,从而实现更高的响应性. new Thread(runnable).start() 在生产 ...
随机推荐
- Windows定时任务copy到nfs目录
@echo off mount 192.168.5.10:/data/test x: xcopy /y "D:\backup\mysql\20200316_230000.sql.tar.gz ...
- spring mvc 中获取HttpServletRequest ,HttpServletResponse
spring中的bean最常用的 singleton 模式 如果要在springmvc Controller 中获取 HttpServletRequest ,HttpServletResponse ...
- 关于LoRa安全联盟的六大常见问题
LoRaWAN的安全机制在哪里指定? 所有安全机制都在LULA联盟规范中指定,可以由公众下载. LoRa联盟规范如何保证LoRaWAN网络的安全操作? LoRaWAN支持来源认证.完整的媒体访问控制( ...
- python获取当前时间、今天零点、235959点、昨天当前时间、明天的当前时间
python获取当前时间.今天零点.23:59:59点.昨天当前时间.明天的当前时间. 关注公众号"轻松学编程"了解更多. 获取当前时间.今天零点 使用timedalte. tim ...
- C语言100题集合005-删除一维数组中所有相同的数,使之只剩一个
系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...
- rpm包的卸载与安装
1. rpm包的管理介绍:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有RPM扩展名的文件,RPM是RedHat Package Manager(RedHat软件包管 ...
- 【Kata Daily 190919】Sort Out The Men From Boys(排序)
题目: Scenario Now that the competition gets tough it will Sort out the men from the boys . Men are th ...
- Ros中创建msg和srv遇到的问题
在创建msg和srv文件之后,使用srv和msg文件时候需要对xml文件进行修改,如下: <build_depend>message_generation</build_depend ...
- 三十二张图告诉你,Jenkins构建Spring Boot 有多简单~
持续原创输出,点击上方蓝字关注我 目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Sprin ...
- HarmonyOS Java UI之DirectionalLayout布局
在之前的章节中我使用的是Java 代码构建UI界面,从本节开始,将使用XML构建UI界面. 使用XML构建UI(默认你已经会在项目中创建XML布局文件)界面相对Java代码构建的好处是:结构清晰,代码 ...