Java 字节流(处理二进制数据)类图如下:
输入流InputStream
采用了装饰器模式。
InputStream类型:
类 | 功能 | 构造器函数 |
如何使用 | ||
ByteArrayInputStream | 允许将内存的缓冲区当作InputStream 使用 | 缓冲区,字节将从中取出 作为一种数据源:将其与FilterInputStream对象相连以提供有用的接口 |
StringBuffterInputStream | 将String 转换成InputStream | 字符串。底层实际使用StringBuffter 作为一种数据源:将其与FilterInputStream对象相连以提供有用的接口 |
FileInputStream | 用于从文件中读取信息 | 字符串,表示文件名、文件或FileDescriptor对象 作为一种数据源:将其与FilterInputStream对象相连以提供有用的接口 |
PipedInputStream | 产生用于写入相关PipedOutStream的数据。实现“管道化”概念 | PipedOutStream 作为多线程中数据源:将其与FilterInputStream对象相连以提供有用的接口 |
SequenceInputStream | 将两个或多个InputStream对象转换成单一InputStream | 两个InputStream对象或一个容纳InputStream对象的容器Enumeration 作为一种数据源:将其与FilterInputStream对象相连以提供有用的接口 |
ObjectInputStream | 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化 | InputStream 作为一种数据源:将其与FilterInputStream对象相连以提供有用的接口 |
FilterInputStream | 抽象类,作为“装饰器”的接口。其中,“装饰器”为其他的InputStream类提供有用的功能 | 见下表 |
FilterInputstream类型:
类 | 功能 | 构造器函数 |
如何使用 | ||
DataInputStream | 与DataOutStream搭配使用,因此我们可以按照可移植方式从流读取基本数据类型(int char long等) | InputStream 包含用于读取基本类型数据的全部接口 |
BufferedInputStream | 使用它可以防止每次读取时都得进行实际的写操作。代表“使用缓冲区” | InputStream,可以指定缓冲区大小(可选的) 与InputStream接口对象搭配使用 |
LineNumberInputStream | 跟踪输入流的行号,可调用getLineNumber()和setLineNumber(int) | InputStream 仅增加了行号,与InputStream接口对象搭配使用 |
PushbackInputStream | 具有“能弹出一个字节的缓冲区”,因此可以将读到的最后一个字符回退。 | InputStream 通常作为编译器的扫描器,之所以包含在内是因为Java编译器的需要,我们可能永远不会用到 |
输出流OutputStream
采用了装饰器模式。
OutputStream类型:
类 | 功能 | 构造器函数 |
如何使用 | ||
ByteArrayOutputStream | 在内存中创建缓冲区。所有送往“流”的数据都要放置在此缓冲区 | 缓冲区初始化大小(可选的) 指定数据的目的地:将其与FilterOutputStream对象相连以提供有用的接口 |
FileOutputStream | 用于将信息写入文件 | 字符串,表示文件名、文件或FileDescriptor对象 指定数据的目的地:将其与FilterOutputStream对象相连以提供有用的接口 |
PipedOutputStream | 任何写入其中的信息都会自动作为相关PipedInputStream的输出。实现“管道化”概念 | PipedInputStream 指定用于多线程的数据的目的地:将其与FilterOutputStream对象相连以提供有用的接口 |
ObjectOutputStream | ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream | 指定数据的目的地:将其与FilterOutputStream对象相连以提供有用的接口 |
FilterOutputStream | 抽象类,作为“装饰器”的接口。其中,“装饰器”为其他的OutputStream类提供有用的功能 | 见下表 |
FilterOutputStream类型:
类 | 功能 | 构造器函数 |
如何使用 | ||
DataOutputStream | 与DataInputStream搭配使用,因此我们可以按照可移植方式向流中写入基本数据类型(int char long等) | OutputStream 包含用于写入基本类型数据的全部接口 |
PrintStream | 用于产生格式化输出。其中DataOutputStream处理数据的存储,PrintStream处理显示 | OutputStream,可以用boolean值指示是否在每次换行时清空缓冲区(可选的) 最常用的是System.out |
BufferedOutputStream | 使用它避免每次发送数据时都得进行实际的写操作。代表“使用缓冲区”。可以调用flush清空缓冲区 | OutputStream,可以指定缓冲区大小(可选的) 与OutputStream接口对象搭配使用 |