--- stream 数据流 java ---

文件内容的读写 数据流

可以讲数据想象成一个流淌着数据的河流,一条讲cpu和文件数据联系起来的河流,对于数据的读取的类是InputStream,写入是OutPutStream,简单的判断就是你坐在cpu上,数据向你流过来,那么就是读取inputStream,数据从cpu出去,离你越来越远就是写入,OutputStream

数据的读取

InputStream 字节流

以字节为单位来处理数据

InputStream是一个抽象类,使用时需要一个具体的实现类,对于inputStream实现类有很多可以认为每一种输入的对象都有一个单独的实现类

这里对文件进行读取操作,那么就是FileInputStream

|------------------------------------------|-------------------------------------------------------------------------|
| read(byte\[\] bytes) int | 将数据读取到字节数组中,返回的是成功读取到的数据的个数,读取时数据尽量的多读取到数组中,最多读取bytes.lengh的的长度 -1代表读完了 |
| read() int | 读取一个字节并返回 |
| read(byte\[\] bytes,int off,int len) int | 从off位置开始,最多读取len-off个数据到数组中 |
| close() void | 关闭字节流防止资源的浪费 |

字符流 FileReader

每次读取一个字符,能够处理字符数据,他可以自动处理字符的编码,按照指定的编码一次读取多个字节来对应一个字符

方法和使用和字节流的一样

数据的写入

字节流 OutputStream

|------------------------|------------------------------------------------------------------------|
| write(int b) void | 将数据写入到指定的对象中去 |
| write(byte\[\] b) void | 将数组中的全部写入到数组中去 |
| flush() void | 因为为了减少io的次数,那么就会先将数据写入到缓冲区中,这是是没有真正写入到对象中,那么需要使用flush清空缓冲区,将数据强制写入到对象中 |

字符流 FileWriter 和 OutputStream的具体操作相同

包装io类

对于InputStream 和OutputStream的直接使用还是挺麻烦的,这是就可以是用Scanner来读取数据

这是对于数据的操作就是我们所熟悉的scanner对应的方法了

OutPutStream 使用 PrintWriter

PrintWriter 中的方法的是print、printf、println都是我们熟悉的方法

对于方法的使用

可以理解为将数据打印到对象中,也就是写入到了对象中

还有种自动关闭资源的写法

这样在try退出时程序自动关闭资源,这样就确保资源会忘记关闭了

相关推荐
天空鸟_时光不老几秒前
07-检查点与状态持久化
java·人工智能·spring boot·spring·spring cloud·kafka·maven
GoodStudyAndDayDayUp3 分钟前
一个简单的java jar跑docker
java·docker·jar
Nebula_g17 分钟前
JavaSE加强:Commons-io框架
java·开发语言·算法·javase
Do_It_Today20 分钟前
php url路由入门实例
开发语言·php
程序猿_极客27 分钟前
【免费】2026分享一套优质的基于Java的电子产品抢购管理系统的设计与实现(智能推荐算法+可视化图表),源码+文档+视频详解(讲解)
java·spring boot·后端·协同过滤·电子产品抢购系统
小羊没烦恼!29 分钟前
关于大型asp.net应用系统的架构-架构的选择
java·服务器·开发语言·前端·c#
天空鸟_时光不老30 分钟前
09-RAG问答系统落地:从默认分割器的坑到Milvus召回调优
java·人工智能·spring boot·spring·spring cloud·maven·mybatis
小羊没烦恼!39 分钟前
Windows Azure Platform体验(1):Windows Azure
java·大数据·后端·python·flask·word·.net
夏幻灵40 分钟前
前端八股:JavaScript 深拷贝详解:实现方式、递归原理与循环引用
开发语言·前端·javascript
suaizai_1 小时前
ComputerUse:让AI真正操控桌面系统
java·前端·javascript