IO流笔记

Java中的IO操作大体能分成两种:输出流和输入流,根据使用的流的方式,又可分为字符流和字节流。

1.读数据流

Reader和InputStream,它们都是抽象类,必须由其子类实例化。

实例化:FileReader和FileInputStream,其构造方法中传入路径参数。
方法:

read();每次读取一个字节/字符

read(char []/byte []);每次读取一群字节/字符,需要提供一个"桶"来装数据

2.写数据流

Writer和OutStream

实例化:FileWriter和FileOutStream
方法:

write():写入,写入的数据可以是一个/一群字符/字节

3. 缓冲流包装

使用缓冲流包装可以显著提高读写速度。

原因:在Java中,进行文件IO操作需要jvm通过系统调用实现内存中程序的数据与磁盘的交互。在这个过程中系统调用的次数越多耗时越大。缓冲流通过在内存中提供一个8KB的缓冲区实现降低系统调用的次数从而提升IO的速度。

方法:

java 复制代码
Reader reader = new FileReader("");
BufferedReader bufferedReader = new BufferedReader(reader);

InputStream inputStream = new FileInputStream("");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

Writer fileWriter = new FileWriter("");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

FileOutputStream fileOutputStream = new FileOutputStream("");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream)

4.性能

通过实践,发现当提供的"桶"容量越大,IO速度越快,但最终会趋于一个理想恒定值(再加大容量也不会显著提升),基于这一点,一个一个的字节/字符进行IO操作其效率非常慢故被抛弃,所以常使用缓冲流包装+较大的"桶"容量来实现IO操作。

原因:减少系统调用

相关推荐
Roselind_Yi25 分钟前
云计算实验实操|Keystone安装配置+CloudSim仿真平台部署(超详细图文版)
java·经验分享·笔记·ubuntu·云计算·vim·虚拟机
zwenqiyu25 分钟前
zwq重链剖分学习笔记,从入门到过掉模板题
笔记·学习
云边散步33 分钟前
godot2D游戏教程系列二(25)
笔记·学习·音视频·游戏开发
深蓝轨迹35 分钟前
解决Redis排序后MySQL查询乱序问题:从原因到落地(通用版)
数据库·redis·笔记·mysql·bug
守护安静星空39 分钟前
ubuntu vscode 调试 at32f435vmt7基于AT32IDE
linux·运维·笔记·vscode·ubuntu
南境十里·墨染春水1 小时前
C++ 笔记 运算符重载(面象对象)
开发语言·c++·笔记
中屹指纹浏览器1 小时前
2026指纹浏览器故障排查与性能优化实战:从异常定位到环境稳定落地
经验分享·笔记
EQ-雪梨蛋花汤1 小时前
【存档笔记】二阶与三阶贝塞尔曲线详解(含 De Casteljau 与公式推导)
笔记
学工科的皮皮志^_^1 小时前
RS485学习
经验分享·笔记·单片机·嵌入式硬件·学习