15.1 IO了解
15.1.1 IO的分类
- 根据输入输出方向分为:
- 输出流(写)
- 输入流(读)
- 根据文件类型:
- 字节流(音频,视频,图片:一次读取一个字节)
- 字符流(文本:一次读取一个字符)
15.1.2 IO流四大家族:
- 四大家族的首领:
- java.io.InputStream 字节输入流
- java.io.OutputStream 字节输出流
- java.io.Reader 字符输入流
- java.io.Writer 字符输出流
- 所有的流都实现了:java.io.Closeable接口:
- 都是可关闭的,都有close()方法.流是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,不然会耗费(占用)很多资源.
- 所有的输出流都实现了:java.io.Flushable接口:
- 都是可刷新的,都有flush()方法.这个刷新表示将通道/管道当中剩余未输出的数据强行输出完(清空管道),如果没有flush()可能会导致丢失数据;
15.1.3 java.io包下需要掌握的流有16个:
-
“类名”以Stream结尾的都是字节流;
-
以“Reader/Writer”结尾的都是字符流;
-
文件专属:
- java.io.FileInputStream
- java.io.FileOutputStream
- java.io.FileReader
- java.io.FileWriter
-
转换流:(将字节流转换成字符流)
- java.io.InputStreamReader
- java.io.OutputStreamWriter
-
缓冲流专属:
- java.io.BufferedReader
- java.io.BufferedWriter
- java.io.BufferedInputStream
- java.io.BufferedOutputStream
-
数据流专属:
- java.io.DataInputStream
- java.io.DataOutputStream
-
标准输出流:
- java.io.PrintWriter
- java.io.PrintStream
-
对象专属流:
- java.io.ObjectInputStream
- java.io.ObjectOutputStream