什么是I/O
Java中I/O操作主要指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫作写出数据。
按数据流向:输入流和输出流
- 输入流:把数据从其他设备上读取到内存中的流。
- 输出流:把数据从内存中写到其他设备上的流
按处理的数据类型分类:字节流和字符流
- 字节流:以字节为单位,读取数据的流
- 字符流:以字符为单位,读取数据的流
分类之后对应的超类;(父类)
输入流 | 输入流 | |
---|---|---|
字节流 | 字节输入流InputStream | 字节输出流OutputStream |
字符流 | 字符输入流Reader | 字符输出流Writer |
注:
由这四个类的子类名称都是以其父类作为子名的后缀。
如:InputStream的子类是FileInputStream。
如:Read的子类FileReader。
I/O流的四点明确
(1)明确要操作的数据源还是数据目的(要读还是要写)
源:
InputStream
Reader
目的:
OutputStream
Writer
(2)明确要操作的设备上的数据是文字还是文本
源:
字节:InputStream
文本:Reader目的:
字节:OutputStream
文本:Writer
(3)明确数据所在的具体设备
源设备:
硬盘:文件File开头内存:数组,字符串
键盘:System.in
网络:Socket
对应目的设备:
硬盘:文件File开头
内存:数组,字符串
键盘:System.out
网络:Socket
(4)明确是否需要额外功能
需要转换--------转换流InputStreamReader、OutputStreamWriter
需要高效的-----缓冲流BufferedXXX
多个源-----------序列流SequencelnputStream
保证数据的输出形式---------------------打印流PrintStream、Printwriter
操作基本数据,保证字节原样性------DataOutputStream、DataInputStream