--- 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退出时程序自动关闭资源,这样就确保资源会忘记关闭了

相关推荐
t1987512811 分钟前
基于多尺度特征融合与自适应权重优化的水下图像对比度与边缘增强MATLAB方法
开发语言·matlab
JustMove0n11 分钟前
互联网大厂Java面试全流程问答及技术详解
java·jvm·redis·mybatis·dubbo·springboot·多线程
SimonKing19 分钟前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
玹外之音20 分钟前
Spring AI 11 种文档切割策略全解析
java·spring·ai编程
Java练习两年半38 分钟前
互联网大厂 Java 求职面试:技术栈与微服务深度解析
java·微服务·面试·技术栈
Seven9744 分钟前
类字节码:揭开Java虚拟机运行机制的神秘面纱
java
chilavert3181 小时前
程序员面试经典问题解答:java篇-2
开发语言·python
senijusene1 小时前
TCP并发服务器:poll和epoll的多路复用
开发语言·php
浅碎时光8071 小时前
Qt (按钮/显示/输入/容器类控件 布局管理器)
开发语言·qt
lang201509281 小时前
从零开始掌握 Logback:Java 日志框架的“Hello World”实战指南
java·单元测试·logback