read
input
inputStream
write
output
outputStream
IO流的分类:
1.按照流的方向,以内存为参照物,往内存中去,叫做输入,或者读,从内存中出来,叫做输出,或者写。
2.按照读取数据方式,按字节方式读取数据,一次一个字节,这种流万能,什么类型的文件都可以读取;按照字符方式读取数据,一次一个字符,这种是为了方便读取普通文本文件存在的,只能读取文本文件,不能读取:图片声音视频等,word也不行。
按字符流读 file.txt : a总daj
第一次读:‘a’ (Windows占一个字节)
第二次读:’总‘(Windows占两个字节)
综上:流的分类
输入流 输出流
字节流 字符流
java IO流这块有四大家族:
java.io.IuputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
注意:在Java中只要类名以Stream结尾的都是字节流,以reader/writer结尾的都是字符流
四大家族首领都是抽象类
1.所有的流都实现了 closeable,都是可关闭的,都有close()方法,流用完之后一定要关闭,不然会占用很多资源。
2.所有的输出流都实现了flushable,都是可刷新的,都有flush()方法,输出流在最终输出之后,一定要记得flush()刷新一下,这样会将管道当中剩余未输出的数据强行输出完(清空管道)。如果没有flush,可能会导致丢失数据。
java.io包下需要掌握的流有16个:
文件专属:
FileInputStream
FileOutputStream
FileReader
FileWriter
转换流:(将字节流转换成字符流)
InputStreamReader
OutputStreamWriter
缓冲流专属:
BufferedReader
BufferedWriter
BufferedInputStream
BufferedOutputStream
数据流专属:
DataInputStream
DataOutputStream
标准输出流:
printWriter
printStream
对象专属流:
ObjectInputStream
ObjectOutputStreamt