Java 中常见类型的流

Java 中的流(Stream)分为两种类型:字节流和字符流。

    字节流(Byte Stream)

字节流可以处理任何类型的数据,但是它们是以字节为单位进行操作的。Java 中提供了两种字节流:InputStream 和 OutputStream。

InputStream 是字节输入流,用于从数据源读取数据。InputStream 的常用子类包括:

    FileInputStream:用于从文件中读取数据。
    ByteArrayInputStream:用于从字节数组中读取数据。
    PipedInputStream:用于从管道中读取数据。

OutputStream 是字节输出流,用于将数据写入到目标位置。OutputStream 的常用子类包括:

    FileOutputStream:用于将数据写入文件。
    ByteArrayOutputStream:用于将数据写入字节数组。
    PipedOutputStream:用于将数据写入管道。

    字符流(Character Stream)

字符流用于处理字符数据,它们是以字符为单位进行操作的。Java 中提供了两种字符流:Reader 和 Writer。

Reader 是字符输入流,用于从数据源读取字符。Reader 的常用子类包括:

    FileReader:用于从文件中读取字符。
    CharArrayReader:用于从字符数组中读取字符。
    StringReader:用于从字符串中读取字符。

Writer 是字符输出流,用于将字符写入到目标位置。Writer 的常用子类包括:

    FileWriter:用于将字符写入到文件。
    CharArrayWriter:用于将字符写入到字符数组中。
    StringWriter:用于将字符写入到字符串中。

Java 中的流可以按照流的作用分为不同的类型,包括:

    节点流(Node Stream):直接从数据源读取或写入数据的流。
    处理流(Filter Stream):在节点流的基础上增加了一些功能的流。例如,BufferedInputStream 可以使用缓存机制提高读取效率。
    对象流(Object Stream):可以读取或写入 Java 对象的流。例如,ObjectInputStream 和 ObjectOutputStream。

在使用流时,应该遵循以下原则:

    打开流:创建一个输入流或输出流的对象。
    读写数据:使用流读取或写入数据。
    关闭流:使用完流后,应该关闭流以释放资源。通常使用 try-with-resources 语句块来自动关闭流。

    缓冲流(Buffered Stream)

缓冲流是处理流的一种,它使用缓存机制来提高 I/O 操作的效率。Java 中提供了两种缓冲流:BufferedInputStream 和 BufferedOutputStream。

BufferedInputStream 继承自 FilterInputStream,用于从输入流中读取数据并提供缓冲功能。BufferedOutputStream 继承自 FilterOutputStream,用于将数据写入到输出流中并提供缓冲功能。

在使用缓冲流时,应该遵循以下原则:

    打开流:创建一个输入流或输出流的对象。
    创建缓冲流:将输入流或输出流传递给 BufferedInputStream 或 BufferedOutputStream 的构造函数。
    读写数据:使用缓冲流读取或写入数据。
    关闭流:使用完缓冲流后,应该关闭缓冲流以释放资源。关闭缓冲流时,缓冲流会自动刷新缓存区。

    转换流(InputStreamReader 和 OutputStreamWriter)

转换流是字符流和字节流之间的桥梁,它可以将字节流转换为字符流,也可以将字符流转换为字节流。Java 中提供了两种转换流:InputStreamReader 和 OutputStreamWriter。

InputStreamReader 将字节流转换为字符流,OutputStreamWriter 将字符流转换为字节流。转换流使用指定的字符集将字节流中的字节解码为字符,或将字符编码为指定的字节序列。

在使用转换流时,应该遵循以下原则:

    打开流:创建一个输入流或输出流的对象。
    创建转换流:将输入流或输出流传递给 InputStreamReader 或 OutputStreamWriter 的构造函数。需要指定字符集。
    读写数据:使用转换流读取或写入数据。
    关闭流:使用完转换流后,应该关闭转换流以释放资源。关闭转换流时,转换流会自动关闭底层的字节流或字符流。

    对象流(Object Stream)

对象流可以读取或写入 Java 对象,包括基本数据类型和引用类型。Java 中提供了两种对象流:ObjectInputStream 和 ObjectOutputStream。

ObjectInputStream 从输入流中读取对象,ObjectOutputStream 将对象写入到输出流中。对象流需要将对象序列化和反序列化为字节序列。

在使用对象流时,应该遵循以下原则:

    打开流:创建一个输入流或输出流的对象。
    创建对象流:将输入流或输出流传递给 ObjectInputStream 或 ObjectOutputStream 的构造函数。
    读写对象:使用对象流读取或写入对象。
    关闭流:使用完对象流后,应该关闭对象流以释放资源。关闭对象流时,对象流会自动关闭底层的字节流或字符流。
posted @ 2023-10-05 14:44  DjcCode  阅读(115)  评论(0编辑  收藏  举报