- 什么是IO流
从硬盘读到内存的过程叫读入,input
从内存读到硬盘的过程叫读出,output
通过io可以完成硬盘文件的读和写 - io流的分类
有多种分类方式,
(1)按照流的方向进行分类
以内存作为参照物,往内存中去,叫做输入,或者叫做读。
从内存中出来,叫做输出,或者叫做写。
(2)按照读取数据的不同方式进行分类:
有的流按照字节的方式读取数据,一次读取一个字节,等同于一次读取8个二进制位
这种流的万能流,什么类型的文件都可以读取,包括:文本文件,图片,声音
有的流是安装字符的方式读取数据的,一次读取一个字符,这种流是为了方便读取普通文本文件而存在的,这种流不能读取:图片,声音,视频等文件。只能读取纯文本文件,连word文件都无法读取。 - 我们学习流是学习怎么new流对象,调用流对象的那个方法是读,那个方法是写
- java io流的四大家族
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
Java.io.Reader 字符输入流
java.io.Writer 字符输出流
四大家族的首领都是抽象类,所有的流都实现了:java.io.Closeable接口,都是可关闭的都有close方法。
流毕竟只是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,不然会耗费很多资源。
所有的输出流都实现了:
java.io.Flushable接口,都是可刷新的,都是flush方法,用完输出流之后刷新一下。刷新的作用就是清空管道
注意:在java中只要以steam都叫字节流,以reader或者writer结尾的都叫字符流 - java中的流
- 相对路径和绝对路径
idea中的相对路径是在工程下,绝对路径在本地硬盘 - fileInputStream流的read方法
(1)read()读到字符本身,一次读取一个字节,放回字节
(2)read(数组) 采用byte数组,一次读取多个字节,做多读取去“数组.length"字节
从硬盘读到数组中
第二次读的话,因为没有四个了,只能读到两个,而且放到前两个位置,返回2,再读的话,读不到了,返回-1
skip(long)跳过几个数组
available()方法,返回未读到的字节数量,作用是可以得到字节总数,用数组一次性读完 - 文件输出流