缓冲流

简介: 缓冲流

概述

什么是缓冲流

缓冲流,也叫 高效流,是对 4个 基本的 File *** 流的增强

所以也是 4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , BufferedOutputStream,字符缓冲流: BufferedReader , BufferedWriter

基本原理

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统 IO 次数,从而提高读写的效率。

字节缓冲流

构造方法

  • public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。
  • public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。
//创建字节缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xhh.txt"));
//创建字节缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xhh.txt"));

效率测试

直接使用 FileInputStream 与 FileOutStream 复制文件

public static void main(String[] args) throws Exception {
    long start = System.currentTimeMillis();
    FileInputStream fis  = new FileInputStream("D:/apache-echarts-4.6.0-incubating-src.zip");
    FileOutputStream fos = new FileOutputStream("newApache.zip");
    int len;
    byte[] b = new byte[1024];
    while ((len = fis.read(b)) != -1){
        fos.write(b);
    }
    fis.close();
    fos.close();
    long end = System.currentTimeMillis();
    System.out.println("时间:"+(end-start));
}
// 49

使用缓冲流复制文件

public static void main(String[] args) throws Exception {
    long start = System.currentTimeMillis();
    BufferedInputStream bis  = new BufferedInputStream(new FileInputStream("D:/apache-echarts-4.6.0-incubating-src.zip"));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("newApache.zip"));
    int len;
    byte[] b = new byte[1024];
    while ((len = bis.read(b)) != -1){
        bos.write(b);
    }
    bis.close();
    bos.close();
    long end = System.currentTimeMillis();
    System.out.println("时间:"+(end-start));
}
// 25

字符缓冲流

构造方法

  • public BufferedReader(Reader in)
  • public BufferedWriter(Writer out)
public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new FileReader("xhh.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("xhh.txt"));
}

特有方法

  • BufferedReader
  • public String readLine():读一行文字
  • BufferedWriter
  • public void newLine() :写一行行分隔符,由系统属性定义符号
public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new FileReader("xhh.txt"));
    String line = null;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
}

public static void main(String[] args) throws Exception {
    BufferedWriter br = new BufferedWriter(new FileWriter("out.txt"));
    br.write("小灰");
    br.newLine();
    br.write("灰");
    br.newLine();
    br.close();
}
相关文章
|
开发框架 .NET 网络性能优化
MCS-51单片机的基本结构
MCS-51单片机的基本结构
1792 1
|
Java 分布式数据库 数据库
软件各种系统架构图
原文:软件各种系统架构图 https://blog.csdn.net/everythingss/article/details/78749247     该技术架构图是本人根据多年企业技术架构经验而制定,是企业技术的总架构图,希望对CTO们有所借鉴。
8511 0
|
8月前
|
人工智能 监控 安全
从 DeepSeek 敏感信息泄露谈可观测系统的数据安全预防
探讨了 SLS 中增强数据安全的几种方式:权限精细化管控有效减少了潜在安全风险;接入层脱敏技术阻止敏感数据落库,提升了隐私保护;StoreView 字段集控制通过限制查询数据范围,降低数据泄露损害。智能监控系统提供实时监测,快速识别并阻断异常拖库行为,为企业提供了迅速响应和抵御威胁的能力。
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
人工智能 搜索推荐 语音技术
青否AI数字人抖音稳定开播,数字人带货优势及注意事项!
AI数字人直播带货革新电商领域,虚拟形象外形逼真且互动流畅,改变购物体验。青否数字人采用【实时改写实时生成】确保内容不重复,并通过AI智能回复即时解答用户问题,解决非实时内容及低频互动违规。数字人技术具24/7工作能力和个性化互动优势,降低成本提高效率。青否数字人直播解决方案实现降本增效,助力商家全天候直播带货,提升销售额。
青否AI数字人抖音稳定开播,数字人带货优势及注意事项!
Vue3——tdesign-vue-next如何按需加载动态渲染ICON
如题,在vue3中进行按需加载来动态的渲染icon图标;
468 1
|
机器学习/深度学习 人工智能 自然语言处理
6.1 自然语言处理综述
这篇文章综述了自然语言处理(NLP)的发展历程、主要挑战、常见任务,并探讨了如何利用深度学习和飞桨框架来解决NLP任务,同时提出了对NLP未来应用的思考。
|
消息中间件 缓存 监控
中间件服务层
【6月更文挑战第13天】
238 2
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
529 0
|
Ubuntu 计算机视觉
【Ubuntu】Ubuntu安装安装opencv3.4.5
【Ubuntu】Ubuntu安装安装opencv3.4.5