1 按照用途进行分类
1.1 按照数据的来源(去向)分类
1.2 按照格式化输出
1.3 按缓冲功能分
1.4 按照数据格式分
1.5 按照输入输出分
1.6 特殊需求
2 确定选用流对象的步骤
3 Java中Inputstream/OutputStream与Reader/Writer的区别
Reader/Writer和InputStream/OutputStream分别是I/O库提供的两套平行独立的等级机构,
InputStream、OutputStream是用来处理
8
位元的流,也就是用于读写ASCII字符和二进制数据;
Reader、Writer是用来处理
16
位元的流,也就是用于读写Unicode编码的字符。
在
JAVA语言中,
byte
类型是
8
位的,
char
类型是
16
位的,所以在处理中文的时候需要用Reader和Writer。
在Java中,有不同类型的Reader/InputStream输入流对应于不同的数据源:
FileReader/FileInputStream 用于从文件输入;
CharArrayReader/ByteArrayInputStream 用于从程序中的字符数组输入;
StringReader/StringBufferInputStream 用于从程序中的字符串输入;
PipedReader/PipeInputStream 用于读取从另一个线程中的 PipedWriter/PipeOutputStream 写入管道的数据。
相应的也有不同类型的Writer/OutputStream输出流对应于不同的数据源:FileWriter/FileOutputStream,CharArrayWriter/ByteArrayOutputStream,StringWriter,PipeWriter/PipedOutputStream。
有两种没有对应Reader类型的InputStream输入流,用getInputStream()来读取数据。
Socket 用于套接字;
URLConnection 用于 URL 连接。
4 流类的继承关系图
4.1 .继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据,且数据的单位都是字节(byte=8bit),如图,深色的为节点流,浅色的为处理流。
4.2 .继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit),如图,深色的为节点流,浅色的为处理流。
4.3 节点流类型
4.4 处理流类型
原文:http://www.cnblogs.com/penghuster/p/4869153.html