小石头课堂(三)IO流总结
最近学了java IO流 是个比较绕的东西,有时候很难理清它的头绪,即使当时清楚了,过一段时间后也会忘记,因此记录下来IO流中常用的几个类,以供大家参考,及本人以后复习。嗯 闲话少叙,下面开始:
其实、很多资料上写java流分为字节流和字符流,虽然可以方便理解与记忆但是本人觉得那是很无聊的分类,因为计算机的输入输出的一切操作都是转化为字节,再转换成二进制,所以我认为那样的分类反而会误导一些初学者。(也可能是我还没深入理解所谓专家们分类依据)。而我认为更好的分类应该是下面这样的:
一、节点流
包括InputStream/OutputStream最常用的是其实现类: FileInputStream/FileOutputStream(fis/fos)。这个类直接与文件(File)连接,可以一个字节的读写,也可以自定义byte[] 数组用来缓冲,多个字节的读写 eg:
二、 处理流
处理流需要套在节点流上(除了fr/fw)包括:
DataInputStream/DataOutputStream(dis/dos)
InputStreamReader/OutputStreamWriter(isr/osw)
FileReader/FileWriter(fr/fw)
ObjectInputStream/ObjectOutputStream(ois/oos)
dis是读java基本数据类型的,它内部会根据调用的方法自动读取相应个字节的二进制数据,并转换成要读的数据类型。
Isr是读取文本文件时进行字符与字节的转换的,将二进制数据按照指定的编码 转换成相应字符。因此也必须套在节点流并且传入指定编码(默认是本地机器的编码方案)。
Fr则是为了方便读取字符,专门设计的,相当于isr+fis,因此不用套在节点流上,可以直接连接file,但它这样就不能指定编码了,只能用默认的编码方案。
Oos则是读取对象时用的 同样用法,套在节点流上,(注意对象需要序列化,且注意类型转换)
三、 缓冲流
缓冲流需要套在节点流上,但一般都是套在处理流上。
BufferedInputStream/ BufferedOutputStream(bis/bos)—》字节
BufferedReader/BufferedWriter(br/bw)—》字符
文件读写经典模式:
Bis--fis,必要时bis—dis—fis。
(指定编码)Br—isr—fis (不用指定编码)br—fr
以上只是我学习时根据自己的理解总结的一些,有些理解不太准确,各个类型的类也不全面,但记住这些并且熟练应用,相信一般的文件操作应该难不住你了,
学的太多反而会更蒙,不好 。若非要学全就自己去查看api吧 。还是那句话:觉得有用呢就赞一下,加我QQ 共同学习!!!
本文提供者:怀念@那片蓝 QQ448661040