缓冲流,BufferReader,BufferWriter,案例

news2024/12/23 23:49:02

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();
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ之顺序消费

什么是顺序消费 例如:业务上产生者发送三条消息, 分别是对同一条数据的增加、修改、删除操作, 如果没有保证顺序消费,执行顺序可能变成删除、修改、增加,这就乱了。 如何保证顺序性 一般我们讨论如何保证消息的顺序性&…

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

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

4- 29

五六月安排 5.12江苏CPC 6.2、6.16、6.30三场百度之星省赛 6月蓝桥杯国赛 7.15 睿抗编程赛道省赛 5 6月两个科创需要申请完软著。 网络技术挑战赛过了资格赛,下面不知道怎么搞,如果参加需要花费很多的时间。 1.100个英语单词一篇阅读,讲了文…

Docker Compose 部署若依前后端分离版

准备一台服务器 本次使用虚拟机,虚拟机系统 Ubuntu20.04,内存 4G,4核。 确保虚拟机能连接互联网。 Ubuntu20.04 安装 Docker 添加 Docker 的官方 GPG key: sudo apt-get update sudo apt-get install ca-certificates curl su…

Hibernate的QBC与HQL查询

目录 1、Hibernate的QBC查询 2、Hibernate的HQL查询 3、NatvieSQL原生查询 1、Hibernate的QBC查询 Hibernate具有一个直观的、可扩展的条件查询API public class Test { /** * param args */ public static void main(String[] args) { Session sessio…

【八股】AQS,ReentrantLock实现原理

AQS 概念 AQS 的全称是 AbstractQueuedSynchronized (抽象队列同步器),在java.util.concurrent.locks包下面。 AQS是一个抽象类,主要用来构建锁和同步器,比如ReentrantLock, Semaphore, CountDownLatch,里…

安卓LayoutParams浅析

目录 前言一、使用 LayoutParams 设置宽高二、不设置 LayoutParams2.1 TextView 的 LayoutParams2.2 LinearLayout 的 LayoutParams 三、getLayoutParams 的使用四、setLayoutParams 的作用五、使用 setWidth/setHeight 设置宽高 前言 先来看一个简单的布局,先用 x…

Jackson-jr 对比 Jackson

关于Jackson-jr 对比 Jackson 的内容,有人在做了一张下面的图。 简单点来说就 Jackson-jr 是Jackson 的轻量级应用,因为我们在很多时候都用不到 Jackson 的很多复杂功能。 对很多应用来说,我们可能只需要使用简单的 JSON 读写即可。 如我们…

手撕spring框架(5)

手撕spring框架(5) 相关系列 手撕spring框架(1) 手撕spring框架(2) 手撕spring框架(3) 手撕spring框架(4) 这是本专题最后一节了,主要是讲述自定义一个注解,实…

QT中的容器

Qt中的容器 关于Qt中的容器类,下面我们来进行一个总结: Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的,而且他们进行了速度和存储的优化,因此可以减少可…

HackTheBox_knote

前言 最近打算刷一些内核利用的 CTF 的题目~~~ 题目分析 内核版本:v5.8.3,但是没有开启 cg 隔离smap/smep/kpti/kaslr 全关,可以 ret2usr,所以应该是比较老的题目了(:这里很奇怪的是就算设置 kaslr 但是…

虚拟化技术 使用Vsphere Client管理ESXi服务器系统

使用Vsphere Client管理ESXi服务器系统 一、实验目的与要求 1.掌握使用vSphere Client管理ESXi主机 2.掌握将CentOS的安装介质ISO上传到ESXi存储 3.掌握在VMware ESXi中创建虚拟机 4.掌握在所创建的虚拟机中安装CentOS6.5操作系统 5.掌握给CentOS6.5安装VMware Tools 6.掌…

RabbitMQ(Docker 单机部署)

序言 本文给大家介绍如何使用 Docker 单机部署 RabbitMQ 并与 SpringBoot 整合使用。 一、部署流程 拉取镜像 docker pull rabbitmq:3-management镜像拉取成功之后使用下面命令启动 rabbitmq 容器 docker run \# 指定用户名-e RABBITMQ_DEFAULT_USERusername \# 指定密码-e R…

python数据可视化:显示两个变量间的关系散点图scatterplot()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化: 显示两个变量间的关系 散点图 scatterplot() [太阳]选择题 请问关于以下代码表述错误的选项是? import seaborn as sns import matplotlib.pyplot …

EPAI手绘建模APP编辑模型2

⑩ 桥接,选择两个面。桥接完成后,在选择的两个面之间生成了一个边界放样模型,边界放样模型和原模型合并成一个新的模型。 图 213 桥接 ⑪ 移除特征,选择倒圆角面、倒直角面、挖孔面、凸起面,移除。移除特征后&#xff…

图像处理ASIC设计方法 笔记21 标记ASIC的顶层状态机

目录 (一)标记ASIC的工作流程1 ASIC首先从控制寄存器内读出待标记图像的基本参数2若写入了有效的启动命令,则进入下面一帧图像的标记过程。3 ASIC通过接口模块从FIFO1中读取待标记的图像4一帧图像初步标记完成后进行等价表的整理压缩5从临时标记存储器中读取临时标记送入标记…

【iOS】KVC

文章目录 前言一、KVC常用方法二、key与keypath区别key用法keypath用法 三、批量存值操作四、字典与模型相互转化五、KVC底层原理KVC设值底层原理KVC取值底层原理 前言 KVC的全称是Key-Value Coding,翻译成中文叫做键值编码 KVC提供了一种间接访问属性方法或成员变…

数据结构练习题---环形链表详解

链表成环,在力扣中有这样的两道题目 https://leetcode.cn/problems/linked-list-cycle/ https://leetcode.cn/problems/linked-list-cycle-ii/description/ 这道题的经典解法是利用快慢指针,如果链表是一个环形链表,那么快指针(fast)和慢指…

AI图书推荐:AI在语言学习教育领域的应用和挑战

这本书《AI在语言学习教育领域的应用和挑战》(AI in Language Teaching, Learning, and Assessment)由Fang Pan编辑,出版于IGI Global,主要探讨了人工智能(AI)在语言教育领域的应用、挑战以及潜在的益处。 …

【苍穹外卖】项目实战Day04

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:苍穹外卖项目实战 🌠 首发时间:2024年5月5日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43e…