JAVA开发常用类(七)
7. 数据流
数据流的处理包括2个概念:
- 数据流方向:输入(Input)和 输出(Output),输入流只能读取数据,输出流只能写入数据。
- 数据类型:字节和字符,字节流以0~255的整数组成,字符流是一种特殊的字节流,仅处理文本数据,以Unicode为标准。
7.1. 字节流——InputStream & OutputSteam
Java的字节流分为 InputStream 和 OutputStream,也就是说所有的数据字节流类都是从其继承下来的。顾名思义,InputStream只能读取,创建时必须有明确的数据来源,而OutputStream只能写入,创建时必须有明确的数据去处。如下图:
字节数据流的类关系如下图:
常用的字节流说明如下:
类名称 |
说明 |
ByteArrayOutputStream |
此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。 |
FileOutputStream |
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。 FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。 |
FilterOutputStream |
此类是过滤输出流的所有类的父类。这些过滤输出流位于已存在的输出流(基础输出流)之上,它们将已存在的输出流作为其基本数据接收器,但可能直接传输数据或提供一些额外的功能。 |
BufferedOutputStream |
该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。 |
DataOutputStream |
数据输出流允许应用程序以适当方式将Java基本数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。 |
StringBufferInputStream |
此类允许应用程序创建输入流,在该流中读取的字节由字符串内容提供。应用程序还可以使用 ByteArrayInputStream 从 byte 数组中读取字节。 只有字符串中每个字符的低八位可以由此类使用。 |