缓冲流,BufferReader,BufferWriter,案例

IO流的体系

 字节缓冲流的作用

提高字节流读取数据的性能

*原理:字节缓冲输入流自带了8Kb的缓冲池,字节缓冲输出流也自带了8kb的缓冲池

构造器说明
public BufferedInputStream(InputStream is)把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能
public BufferedOutputStream(OutputStream os) 把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能
import java.io.*;

public class BufferedInputStream1 {
    public static void main(String[] args) {
            //使用字节流完成对文件的复制操作
                //需求:复制照片
                //创建一个文件字节输入流管道和源文件接通
                try (InputStream is = new FileInputStream("G:\\heima1\\新建文件夹");
                     //定义一个字节缓冲输入流来包装原始的字节输入流
                     InputStream bis=new BufferedInputStream(is);

                     OutputStream os = new FileOutputStream("F:\\My Java\\图片\\新建文件夹");
                     //定义一个字节缓冲输出流来包装原始的字节输出流
                    OutputStream bos= new BufferedOutputStream(os);
                ){
                    //创建一个字节数组,负责转移字节数据
                    byte[]bytes=new byte[1024];
                    //从字节输入流中读取字节数据,再写到字节输出流中去,读多少写出去多少
                    int len;//记住每次读取了多少个字节
                    while ((len=bis.read(bytes))!=-1){
                        bos.write(bytes,0,len);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

                System.out.println("复制完成");
            }
    }

BufferedReader(字符缓冲输出流)

构造器说明
public BufferedReader(Reader r)把低等字符输入流包装成字符输入流管道,从而提高字符输入流读字符数据的性能

字符缓冲输入流新增的功能:按照行读取字符

方法说明
public String readLine()读取一行数据返回,如果没有数据返回了,会返回null
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;

public class BufferedReader1 {
    public static void main(String[] args) {
                //1、创建一个文件字符输入流,每次读取一个字符
                try (Reader rd= new FileReader("D:\\code\\weilai1\\src\\itheima1.txt");
                ){
                    BufferedReader br=new BufferedReader(rd);
                   // char []chars=new char[3];
                   // int len;
                    //while((len= br.read(chars))!=-1){
                     //   String str=new String(chars);
                    //    System.out.print(str);

                   // }
                    String line;//记住每次读取的一行数据
                    while((line=br.readLine())!=null){
                        System.out.println(line);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
    }
}

BufferedWriter(字符缓冲输出流) 
作用:自带8K的字符缓冲池,可以提高字符输出流写字符数据的性能。

构造器说明
public BufferedWiriter(Writer r)把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能

字符缓冲输出流新增的功能:换行

方法说明
public void newLine() 换行
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriter1 {
    public static void main(String[] args) {
        try (FileWriter fw=new FileWriter("D:\\code\\weilai1\\src\\itheima1.txt",true);){
            BufferedWriter bw=new BufferedWriter(fw);
            // void write(int c)
            bw.write('b');
            bw.write('类');
            bw.write(97);
            bw.newLine();//换行
            //void write(String str)
            bw.write("你好,中国");
            bw.newLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对链表进行插入排序(详细解析)

对链表进行插入排序(详解) 题目: 对链表进行插入排序 给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的,每次只移动一个元素&a…

特斯拉FSD落地分析

再续前缘 媒体的神经从马斯克的湾流私人飞机起飞那一刻开始,就开始被牵动着。28/4 号的突然访华,在大多数人看来其实已经早已是计划之中,从摆在台面上的消息来看,主要目的是为了在大陆推广FSD的落地,也为8月份FSD 的正式版本做预热,和中国上海的第一次联姻造就了特斯拉m…

17 内核开发-内核内部内联汇编学习

​ 17 内核开发-内核内部内联汇编学习 课程简介: Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础,让他们能够理解和参与到Linux内核的开发过程中…

【Linux】进程exec函数族以及守护进程

一.exec函数族 1.exec函数族的应用 在shell下敲shell的命令都是在创建shell的子进程。而我们之前学的创建父进程和子进程代码内容以及通过pid与0的关系来让父子进程执行不同的代码内容都是在一个代码文件里面,而shell是如何做到不在一个文件里面写代码使之成为子进…

06|LangChain | 从入门到实战 -六大组件之Agent

点点赞~ 注意:langchain的版本迭代比较快,社区维护,代码当中或许部分方法在某个版本不再支持 01|LangChain | 从入门到实战-介绍 02|LangChain | 从入门到实战 -六大组件之Models IO 03|LangChain | 从入…

asp.net结课作业中遇到的问题解决2

目录 1、如何实现评论交流的界面 2、如果想要将文字添加到数据库中,而不是乱码,该怎么修改 3、如果想要添加的数据已经存在于数据库,就不允许添加了,该如何实现 4、想要实现某个模块下有好几个小的功能该如何实现 5、想要实现…

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合 自己看到题目的第一想法看完代码随想录之后的想法 链接: 216.组合总和III 链接: 17.电话号码的字母组合 自己看到题目的第一想法 216.组合总和III:递归函数终止条件为搜索得到的数相加为n&…

【架构系列】RabbitMQ应用场景及在实际项目中如何搭建可靠的RabbitMQ架构体系

作者:后端小肥肠 创作不易,未经允许禁止转载。 1. 前言 RabbitMQ,作为一款高性能、可靠的消息队列软件,已经成为许多企业和开发团队的首选之一。它的灵活性和可扩展性使得它适用于各种应用场景,从简单的任务队列到复杂的分布式系统…

阿里低代码引擎学习记录

官网 一、关于设计器 1、从设计器入手进行低代码开发 设计器就是我们用拖拉拽的方法,配合少量代码进行页面或者应用开发的在线工具。 阿里官方提供了以下八个不同类型的设计器Demo: 综合场景Demo(各项能力相对完整,使用Fusion…

【前端项目——分页器】手写分页器实现(JS / React)

组件介绍 用了两种方式实现,注释详细~ 可能代码写的不够简洁,见谅🙁 1. 包含内容显示的分页器 网上看了很多实现,很多只有分页器部分,没和内容显示联动。 因此我增加了模拟content的显示,这里模拟了32条数…

Python数据分析案例44——基于模态分解和深度学习的电负荷量预测(VMD+BiGRU+注意力)

案例背景 承接之前的案例,说要做模态分解加神经网络的模型的,前面纯神经网络的缝合模型参考数据分析案例41和数据分析案例42。 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领域过来的小白来问…

Monorepo(单体仓库)与MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

🌟 引言 在软件开发的浩瀚宇宙里,选择合适的代码管理方式是构建高效开发环境的关键一步。今天,我们将深入探讨两大策略——Monorepo(单体仓库)与MultiRepo(多仓库),并通过使用现代化…

Vue3 + Vite + TypeScript + Element-Plus创建管理系统项目

官方文档 Vue3官网 Vite官方中文文档 创建项目 使用npm命令创建项目: npm create vitelatest输入项目名称: ? Project name:项目名选择vue: ? Select a framework: - Use arrow-keys. Return to submit.Vanilla > VueReactPrea…

【网站项目】木里风景文化管理平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度,因此,为了有效地减少服务…

JAVA基础|常用API-JDK8之前传统的日期,时间

一. Date (一)说明 代表的是日期和时间 (二)常用的用法 构造器说明public Date()创建一个Date对象,代表的是系统当前此刻日期时间public Date(long time)把时间毫秒值转换成Date日期对象 常见方法说明public long …

算法提高之潜水员

算法提高之潜水员 核心思想&#xff1a;二维01背包 两个容量v1v2注意状态计算时j和p可以<各自的v #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 1010,M 80,K 22;int f[K][M];int k,V1,V2;int main(){ci…

FloodFill-----洪水灌溉算法(DFS例题详解)

目录 一.图像渲染&#xff1a; 代码详解&#xff1a; 二.岛屿数量&#xff1a; 代码详解&#xff1a; 三.岛屿的最大面积&#xff1a; 代码详解&#xff1a; 四.被围绕的区域&#xff1a; 代码详解&#xff1a; 五.太平洋大西洋水流问题&#xff1a; 代码详解&#x…

锂电池充放电方式曲线

作为一种“化学能-电能”相互转换的能量装置&#xff0c;锂电池在使用过程中必然会进行充电和放电&#xff0c;合理的充放电方式既能减轻锂电池的损伤程度&#xff0c;又能充分发挥锂电池的性能&#xff0c;具有重要的应用价值。 如《GB/T 31484-2015&#xff1a;电动汽车用动…

非对称齿轮的跨棒距算的对不对

前面有一期咱们聊了非对称齿轮《》&#xff0c;非对称齿轮的齿厚测量一般都为跨棒距。最近研究了下计算方法&#xff0c;对计算结果的正确性做了下验证。 在MATLAB中编制了相关的计算程序&#xff1a; 齿轮的模数4&#xff0c;左侧分度圆压力角25&#xff0c;右侧分度圆压力角…