Java IO分类

来源:互联网 发布:linux运行安卓应用 编辑:程序博客网 时间:2024/06/04 20:21

一、Java IO流

字节输入流

InputStream

数据的来源:byteArray,String,File,Pipe等
硬盘 文件
内存 数据
网络 socket
键盘 System.In

1.各种来源对应的类(节点流)

ByteArrayInputStream
StringInputStream
FileInputStream
PipedInputStream

2.处理流

FilterInputStream
BufferedInputStream
DataInputStream
省略(一般用不到)

字节输出流

OutputStream

数据的去向:byteArray,String,File,Pipe等
数据的去向:
硬盘 文件
内存 数据
网络 socket
控制台 System.Out

1.各种去向对应的流(节点流)

ByteArrayOutputStream 输出到字节数组
FileOutputStream 输出到文件
PipedOutputStream 输出到管道

2.处理流

FilterInputStream 增加属性或功能接口的基类
BufferedOutputStream 增加缓冲功能 flush()方法来刷新缓存,写数据到硬盘等目的地 调用close()方法会内部调用flush()方法
DataOutputStream 方便存储数据
PrintStream 格式化输出数据

字符输入流

Reader
BufferedReader
FilterReader

字符输出流

Writer
FilterWriter
BufferedWriter
PrintWriter

转换流

InputStreamReader
OutputStreamWriter

二、Java IO流分类:

1.按功能分:节点流和处理流
2.按传输方向分:输入流和输出流
3.按数据单位分:字节流和字符流

(一)节点流:节点流从一个特定的数据源读写数据,即节点流是直接操作文件、网络的流

ByteArrayInputStream
StringInputStream
FileInputStream
PipedInputStream

ByteArrayOutputStream
FileOutputStream
PipedOutputStream

CharArrayReader
FileReader (字节流+默认编码)
StringReader
PipedReader

CharArrayWriter
FileWriter (字节流+默认编码)
StringWriter
PipedWriter

(二)处理流:“连接”已存在的流(节点流或处理流),通过对数据的处理为程序提供更强大的功能。

如下:
缓冲流:BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,提升性能,避免频繁访问硬盘
转换流:InputStreamReader OutputStreamWriter (字节流+编码) 方便字符的读写
对象流:ObjectInputStream ObjectOutputStream 对象持久化
数据流:DataInputStream DataOutputStream 方便处理基本类型数据的读写
格式化输出 PrintStream PrintWriter

三、IO流的操作规律总结

1.明确体系

数据源:InputStream,Reader
数据汇:OutputStream,Writer

2.明确数据

数据源:是否为纯文本?是,Reader,否,InputStream
数据汇:是否为纯文本?是,Writer,否,OutputStream
通过1,2就可以明确具体要使用哪一个体系了,剩下的就是要明确使用这个体系中的哪个对象

3.明确设备

数据源:键盘 System.In
硬盘 FileXXX
内存 数组
网络 socket
数据汇 控制台 System.Out
硬盘 FileXXX
内存 数组
网络 socket

4.明确额外功能

1)需要转换?是,使用转换流
2)需要高效?是,使用缓冲流
3)需要其他

关键名词翻译:

source 数据源
sink 数据汇