1.java中IO流的分类:
1.按照流向 输入与输出
输入流的指向叫做源
输出流的指向叫做目的地.
2.按照流操作的单位 字节 字符
两个字节组成一个字符。汉字是用一个字符来描述的。 数字,字母是用字节来描述。
3.按照流的功能: 基本流 复合流(包装流)
基本流,它可以直接操作源或目的地。
复合流,它不能直接操作源或目的地,它需要包装一个基本流才可以使用。
简单说:复合流的源或目的地是一个流。
2.java中io流需要知道最基本的四个类。
InputStream---- 字节输入流.它做读取操作
OutputStream----字节输出流.它做写入操作read()
write()
Reader-------字符输入流
Writer-------字符输出流。
以上四个类是抽象类,它们是io流的基类。
3.关于流的选择
第一个要明确:我们要进行写操作还是读操作.
InputStream Reader
OutputStream Wrtier
选择输入还是输出。
第二个明确:关于字节与字符选择:
字节:InputStream OutputStream
字符:Reader Writer.
1.对于二进制文件,我们使用字节流操作.例如 图片 视频 音频。
2.对于文本文件用字符流来操作.
3.在开发,如果只是想要做一个原样的复制。直接就使用字节流。
如果从源读到信息后,还要对信息进行操作,在写出去,就使用字符流。
简单说,就是写自定义信息。
第三个明确:对于这些包装流来说,它们一般情况下就两个作用:
1.完成特殊功能
2.提高效率.
BufferedReader BufferedWriter
BufferedInputStream BufferedOutputStream
第四个明确:明确源与目的地
源或目的地是文件:FileInputStream FileOutputStream FileReader FileWriter
源或目的地是数组:ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
源或目的地是网络:DataInputStream DataOutputStream ObjectInputStream ObjectOutputStream.
例如 键盘 System.in
屏幕 Systme.out
3.InputStreamReader与OutputStreamWrtier它们的作用:
1.在字节与字符之间做转换.
2.可以指定编码进行读写操作。