首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【零基础学java】(IO流进阶)

【零基础学java】(IO流进阶)

作者头像
北极的代码
发布2026-04-22 19:36:32
发布2026-04-22 19:36:32
600
举报
文章被收录于专栏:JavaSEJavaSE

缓冲流

缓冲流种类

字节缓冲输入流:BufferedlnputStream 字节缓冲输出流:BufferedOutputStream 字符缓冲输入流:BufferedReader 字符缓冲输出流:BufferedWriter

传统写入: 写1字节 → 系统调用 → 磁盘I/O → 返回 缓冲流写入: 写1字节 → 存入缓冲区(内存操作) → ... → 缓冲区满 → 批量写入磁盘

我们从实际数字上来体会缓冲流的作用

为什么缓冲区的大小一般是8192字节而不是越大越好

注意

对于字符流提升不明显,对于字符缓冲流而言关键点是两个特有的方法(字符流底层自带缓冲区) 字符缓冲流两个特有的方法 字符缓冲输入流BufferedReader:readLine() 字符缓冲输出流BufferedWriter:newLine()

缓冲流的分类

字节缓冲流

方法名称说明 public BufferedInputStream(InputStream is) 把基本流包装成高级流,提高读取数据的性能 public BufferedoutputStream(OutputStream os) 把基本流包装成高级流,提高写出数据的性能 原理:底层自带了长度为8192的缓冲区提高性能

字节缓冲输入流

细节:这里的需求是拷贝,所以同时创建了输入输出流,但是关于IO流的创建,并不是看起来那么随意,而是随用随创建,有时创建的时机不正确可能会导致文件中数据清空,因为创建输出流时如果文件存在,会自动清空里面的数据,如果不存在会自动创建

字符缓冲输入流

字符缓冲输入流BufferedReader:readLine(),可以一次读取一整行 字符缓冲输出流BufferedWriter:newLine(),跨平台的换行,不同的系统

转换流

是字符流和字节流之间的桥梁

转换流的名字是 字符转换输入流:InputStreamReader 字符转换输出流:OutputStreamWriter 转换流的作用是 指定字符集读写数据(JDK11之后已淘汰) 字节流想要使用字符流中的方法了

序列化

序列化流的小细节

当要序列化多个对象时,我们可以把对象放到集合中,反序列化时更简洁

使用对象输出流将对象保存到文件时会出现NotSerializableException异常 解决方案:需要让Javabean类实现Serializable接口 。Serializable接口里面是没有抽象方法,标记型接口一旦实现了这个接口,那么就表示当前的Student类可以被序列化

反序列化

序列化流/反序列化流的细节汇总

使用序列化流将对象写到文件时,需要让Javabean类实现Serializable接口。 否则,会出现NotSerializableException异常

序列化流写到文件中的数据是不能修改的,一旦修改就无法再次读回来了

序列化流/反序列化流的细节汇总

①使用序列化流将对象写到文件时,需要让Javabean类实现Serializable接口。 否则,会出现NotSerializableException异常

②序列化流写到文件中的数据是不能修改的,一旦修改就无法再次读回来了

序列化对象后,修改了Javabean类,再次反序列化,会不会有问题? 会出问题,会抛出InvalidclassException异常 解决方案:给Javabean类添加serialversionUID(序列号、版本号)

④如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢? 解决方案:给该成员变量加transient关键字修饰, 该关键字标记的成员变量不参与序列化过程

打印流

打印流 分类:打印流一般是指:PrintStream,PrintWriter两个类 特点1:打印流只操作文件目的地,不操作数据源 特点2:特有的写出方法可以实现,数据原样写出 例如:打印:97 文件中:97 特点3:特有的写出方法可以实现自动刷新,自动换行 打印一次数据=写出+换行+刷新

字节打印流
字符打印流

打印流与输出语句

//获取打印流的对象,此打印流在虚拟机启动的时候,由虚拟机创建,默认指向控制台 //特殊的打印流,系统中的标准输出流,是不能关闭,在系统中是唯一的。

压缩流

压缩本质:把每一个(文件/文件夹)看成ZipEntry对象放到压缩包中

Hutool

这里我们介绍一个工具包,大大提高了代码的书写效率

https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.16/hutool-all-5.8.16.jar

下载链接附上

之后我们导入库中,就可以使用了

使用时可以参考一下链接

官网: https://hutool.cn/ API文档: https://apidoc.gitee.com/dromara/hutool/ 中文使用文档: https://hutool.cn/docs/#/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓冲流
    • 缓冲流的分类
      • 字节缓冲流
    • 转换流
    • 序列化
    • 反序列化
    • 打印流
      • 字节打印流
      • 字符打印流
    • 压缩流
    • Hutool
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档