1、什么是IO流?
I是Input,O是Output,通过IO流可以完成对硬盘文件的读和写
2、IO流的分类
(1)按流的方向分【以内存为参照】
输入流:往内存中去
输出流:从内存中出来
(2)按流读取数据的方式不同
字节流:有的流是按字节方式读取数据的,一次只能读取一个字节,相当于读取八位二进制,这 种流是万能的,可以读取任何类型的文件,包括:文本文档,图片,声音文件......
字符流:有的流是按字符方式读取数据的,一次只能读取一个字符,但这种流不能读取图片视频 音频等文件,只能读取纯文本文档,word文件也不能读取
综上所述:流的分类:输入流、输出流、字节流、字符流
3、Java中的IO流都放Java.io包下
4、流的四大家族(都是抽象类)
java.io.inputstream字节输入流
Java.io.outputstream字节输出流
java.io.reader字符输入流
java.io.writer字符输出流
总结:在java中只要以stream结尾都是字节流,只要以reader或writer结尾都是字符流
5
(1)所有的流都实现了java.io.closeable这个接口,都是可关闭的,都有close这个方法,流毕竟是一个管道,是内存和硬盘之间的通道,用完之后必须要关闭一下,否则会浪费(占用)很多资源
(2)Java中所有的输出流都实现了java.io.flushable这个接口,都是可刷新的,都有flush这个方法,在输出完是哟有的流之后一定要flush刷新一下,这个刷新表示将通道中剩余为输出的数据全部强行输出,刷新管道的作用就是清空管道
*如果没有flush()的话可能会导致数据丢失
6、java.io包下需要掌握的流有16个
(1)文件专属流
fileinputstream fileoutputstream
filereader filewriter
(2)缓冲流专属
bufferedinputstream bufferedoutputstream
bufferedreader bufferedwriter
(3)转换流
inputstreamreader outputstreamwriter
(4)对象流专属
objectinputstream objectoutputstream
(5)标准输出流
printstream printwriter