I:input
0:output
通过IO可以完成对硬盘的读和写
有多种分类方式:
以内存为参照物:
往内存中去,叫输入(input),或者叫读(read)
从内存中出去,叫做输出(output),或者叫写(write)
有的流是按照字节的方式读取数据,一次读取一个字节byte,等同于一次读取8个二进制位
这种流是万能的,什么类型都可以读取。包括:文本文件,图片,声音文件,视频
有的流是按照字符的方式读取数据,一次读取一个字符,这种流是为了方便读取文本文件而存在的,
这种流只能读取文本文件,连word文件都无法读取
假设有文件file.text: a中国b张三
1:使用字节流读取
第一次读:一个字节“a”(windows文件中,一个char占一个字节)
第二次读:一个字节,“中”的一半
第三次读:一个字节,“中”的另一半
2:使用字符流读取
第一次读:一个字符“a”
第二次读:一个字符,“中”
java.io.InputSteam 字节输入流
java.io.OutputSteam 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
注意:
1:java中类名以stream结尾的都是字节流,以reader/writer结尾的都是字符流
四大模块均为抽象类
2:所有的流都实现了java.io.closeable接口,都是可关闭的
流是一个内存和硬盘的管道,用完一定要关闭,不然会浪费很多资源
3:所有的输出流都实现了java.io.Flushable,都是可刷新的,都有flush()方法
输出流在最终输出之后,一定要记得flush()
刷新一下,这表示将在通道中剩余的数据强行输出完
刷新的作用就是清空管道
如果没有flush可能会丢失数据
java.io.FileInputSteam
java.io.FileOutputSteam
java.io.FileReader
java.io.FileWriter
java.io.FileInputSteamReader
java.io.FileOutputSteamWriter
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputSteam
java.io.BufferedOutputSteam
java.io.DataInputStream
java.io.DataOutputStream
java.io.ObjectInputStream
java.io.ObjectOutputStream
原文:https://www.cnblogs.com/rmxob/p/14661449.html