java中的IO缓冲流(高效流)---原始流的升级版

简介: 直白理解:就是原先传输的只是水管慢慢传,现在加上了一个水塔,可以提前缓存更多的数据。

一、知识点解释:

1.什么是缓冲流?

答:就是比原始流(加File的流)传输效率更加快的流。

优点:

1.自带缓冲区,读写性能更加强悍

2.自带8k缓冲区,原始流是1k

直白理解:就是原先传输的只是水管慢慢传,现在加上了一个水塔,可以提前缓存更多的数据。

2.语法?

答:和原始流差不多。一样用到多态的方法。抽象类前面加上Buffere就好了

字节缓冲输入流(BuffereInputStream

字节缓冲输出流(BuffereOutputStream

字符缓冲输入流(BuffereReader

字符缓冲输出流(BuffereWriter

直白理解:就是在原始流一样语法,然后多加一条加强语句就好了

二、代码例子:

1.缓冲字节流

代码解释:这里用一个文件复制的例子,里面包含了字节输入和字节输出流去理解。结合数组来用,就是字节流速度达到了最快的程度。下面代码里面有教快速的数组读写方法和一个一个字节的缓慢读取方法

例子:

package bao;
import java.io.*;
public class Test {
    public static void main(String[] args) throws Exception {
        //1.创建要复制的文件地址
        InputStream in = new FileInputStream("D:\\java_base\\SE\\src\\bao\\大富豪.txt");//原始流语句
        InputStream bin = new BufferedInputStream(in);//加上高级缓冲流语句
        //2.创建要粘贴到的目标地址
        OutputStream out = new FileOutputStream("D:\\java_base\\SE\\src\\bao\\继承者.txt");//原始流语句
        BufferedOutputStream bout = new BufferedOutputStream(out);//加上高级缓冲流语句
        //3.中介管道转移数据
        //传输快速的数组方法。缓慢的读写方法放在其他知识点下面了
        byte[] bytes = new byte[1024];//数据交接的桶,1024大小
        int len;//记录每次读取的字节
        while ((len = bin.read(bytes))!=-1){//读
            bout.write(bytes,0,len);//写
        }
        //关闭流
        bin.close();
        bout.close();
    }
}
//其他知识点:代码每次运行都会覆盖之前的数据,如果想不被覆盖,就在原始输出流地址的后面加上true就可以了。
//传输缓慢的一个一个字节读写的方法
/*
 int b;
     while ((b=bin.read())!=-1){
        bout.write(b);
          }*/

素材



运行结果:



2.缓冲字符流

代码解释:缓冲字符流比原始流读写更加的快速。而且新增了一个readLine(行读取)功能。字节流和字符流代码功能基本一样,只要改抽象类和基本数据类型------字节用byte,字符用char就好了

例子:

字符缓冲输入流(读取):

package bao;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;
public class Test {
    public static void main(String[] args) throws Exception {
        //1.原始流:创建读取文件的对象
        Reader fr = new  FileReader("D:\\java_base\\SE\\src\\bao\\大富豪.txt");
        //2.缓冲流:给原始流加上
        BufferedReader br = new BufferedReader(fr);
        String line;//缓冲桶
        while ((line = br.readLine())!=null){//读文件数据内容
            System.out.println(line);//输出
        }
        br.close();//关闭流
    }
}

素材:



运行结果:

第二行:锦瑟无端五十弦,一弦一柱思华年

第三行:庄生晓梦迷蝴蝶,望帝春心托杜鹃

ADFASF985

字符缓冲输出流(写入):

例子:

package bao;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Test {
    public static void main(String[] args) throws IOException {
        //1.原始流。创建要写入数据的对象
        Writer fw = new FileWriter("D:\\java_base\\SE\\src\\bao\\风花雪月.txt");//每次写入都会覆盖之前的,本行括号行尾里面加上true就好了
        //2.缓冲流。给原始流加强
        BufferedWriter bw = new BufferedWriter(fw);
        //3.单独写入数据
        bw.write("天亮了啊");//只能单独写入数字
        bw.newLine();//换行
        bw.write('K');//只能单独写入一个字节
        bw.newLine();//换行
        //4.大量写入数据。用到数组
        char[] chars ="今日海棠花未眠kk99,4332".toCharArray();
        bw.write(chars);//把数组的全部写进去。也可以截取写进去
        bw.write("\r\n");//换行
        bw.close();//关闭流
    }
}

运行结果:

天亮了啊

K

今日海棠花未眠kk99,4332


旁白:缓冲流和原始流写法差不多,就是在原始流写好的基础上加上一条缓冲流语句。这个语句就是抽象类前面加上这个就可以了Buffere。缓冲流还多加了一条语法(行读取)的读写Line

目录
相关文章
|
2月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
184 1
|
3月前
|
安全 架构师 Java
Java LTS版本进化秀:从8到21的欢乐升级之旅
困惑于Java版本选择?轻松幽默地穿越Java LTS版本时光隧道,掌握从Java 8到21的关键特性。通过一家初创公司的系统升级故事,直观了解每个版本如何解决代码冗余、性能瓶颈等开发痛点,助你在技术选型中做出明智决策。
|
4月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
4月前
|
SQL Java 数据库连接
Java IO流(一):字节流与字符流基础
本文全面解析Java IO流,涵盖字节流、字符流及其使用场景,帮助开发者理解IO流分类与用途,掌握文件读写、编码转换、异常处理等核心技术,通过实战案例提升IO编程能力。
|
5月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
119 2
|
5月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
155 0
|
6月前
|
存储 Java API
MinIO Java SDK 7.1.4 升级到 8.5.17 需要注意什么
现在我需要你帮我分析对比这个两个sdk在对外的接口设计上是否有不兼容的变更
485 5
|
6月前
|
Java API 微服务
2025 年 Java 核心技术全面升级与实战应用详解
这份Java校招实操内容结合了最新技术趋势,涵盖核心技术、微服务架构、响应式编程、DevOps及前沿技术等六大模块。从函数式编程到Spring Cloud微服务,再到容器化与Kubernetes部署,帮助你掌握企业级开发技能。同时,提供AI集成、区块链实践和面试技巧,包括高频算法题与系统设计案例。通过学习这些内容,可应对90%以上的Java校招技术面试,并快速上手实际项目开发。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
724 41
|
9月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
363 23