一、I/O基本概念
1、输入和输出---完成硬盘文件的读和写
(1)向内存输入文件---input, read---输入流 InputStream 硬盘--->内存
(2)从内存输出文件---output,write---输入流 OutputStream 内存--->硬盘
2、I/O流分类
(1)流的方向
输入流InputStream -----read
输出流OutputStream ----write
(2)读取数据的方式
[按字节方式]---一次读一个byte,所有文件都可以读
[按字符方式]---一次读一个字符,只能读系统中普通文本文件,
如 txt,不可读:文本文件(word),图片,声音,视频等
3、IO流的四大家族
(1)java.io.InputStream 字节输入流
(2)java.io.OutputStream 字节输出流
(3)java.io.Reader 字符输入流
(4)java.io.Writer 字符输入流
【注】
- 类名凡是以“stream”结尾为字节流,凡是以“reader/writer”结尾的为字符流
- 四大家族的都领都是抽象类---abstract class
- 所有流都是可关闭的,用完流要关闭 close()
- 所有输出流都是可刷新的,刷新的作用是清空管道 flush() --没有书信可能会导致数据的丢失
4、常用的16种流
(1)文件专属
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
(2)转换流(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter
(3)缓冲专属
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
(4)数据流专属
java.io.DataInputStream
java.io.DataOutputStream
(5)标准输出流
java.io.PrintWriter
java.io.PrintStream
(6)对象专属流
java.io.ObjectInputStream
java.io.ObjectOutputStream
二、文件字节流【重点】
(一)FileInputStream 文件字节输入流
1、任何类型的文件都可以采用这个流来读
2、字节的方式完成输入操作,读的操作(硬盘--->内存)
3、