IO,流,数据流,来点概念好了:
-
1.概念
- IO流用来处理设备之间的数据传输
- Java对数据的操作是通过流的方式
- Java用于操作流的类都在IO包中
- 流按流向分为两种:输入流,输出流。
- 流按操作类型分为两种:
- 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
- 字符流 : 字符流只能操作纯字符数据,比较方便。
-
2.IO流常用父类
- 字节流的抽象父类:
- InputStream
- OutputStream
- 字符流的抽象父类:
- Reader
- Writer
- 字节流的抽象父类:
-
3.IO程序书写
- 使用前,导入IO包中的类 内存和硬盘之间的数据流通。
- 使用时,进行IO异常处理 内存和硬盘之间的数据处理会出现问题,需要处理。
- 使用后,释放资源 相当于内存和硬盘之间创建流通管道,使用之后需要关闭,及时释放资源。
一般的图片,文档传一传就很满足了,而要升下级,就得用
- int read(byte[] b):一次读取一个字节数组
- write(byte[] b):一次写出一个字节数组
- available()获取读的文件所有的字节个数
- 弊端:有可能会内存溢出
所以还可以加Buffered
- BufferedInputStream内置了一个缓冲区(数组)
- 从BufferedInputStream中读取一个字节时
- BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
- 程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
- 直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个
- BufferedOutputStream也内置了一个缓冲区(数组)
- 程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
- 直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里
当然还有针对字符操作的流,今天不说,明天继续。
ps:每日一词
鹊桥仙·云烟清晓
云烟镜晓,花容明了,香暖浮光月照。西山安步任逍遥,取风巧、阴平阳调。
云苏流绕,仙家住小,鹊笑线牵红老。人情天意细寻详,不过是、一还一报。