admin 管理员组

文章数量: 887031


2023年12月21日发(作者:oracle11g 中文界面)

Javaio流的常用API及其用法详解

2023年,Java作为一种高度受欢迎的编程语言,它的应用程序在全球范围内得到了广泛的应用。其中,Java I/O流作为Java语言中使用最广泛的API之一,是进行输入和输出操作的重要基础。本文将详细介绍Java I/O流的常用API及其用法。

一、Java I/O流的概念

Java I/O流是Java编程语言中的一种输入/输出API,它提供了一种通用的方式来读取和写入数据。输入/输出可以是文件、内存缓存、网络连接等,这些数据流可以被Java I/O流转换为Java对象。Java中的I/O流被分为两个方向:输入和输出。

Java提供了大量的I/O类和接口,以满足不同的I/O需求。I/O类和接口可以分为以下几类:

1.字节流(Byte Stream)

2.字符流(Character Stream)

3.过滤器流(Filter Stream)

4.对象流(Object Stream)

5.转换流(Conversion Stream)

6.推回输入流(Pushback Stream)

7.其他特殊流

下面我们将分别介绍Java I/O流中这些类和接口的常用API及其用法。

二、字节流(Byte Stream)

第 1 页 共 9 页

字节流以字节为单位读写数据。这些流用于读取和写入二进制数据或任意类型的文件。Java I/O流提供以下两个字节流的类:

1. InputStream

2. OutputStream

InputStream类

InputStream类是一个抽象类,定义了一些读取数据的方法。InputStream类的常用方法如下:

1. read():从输入流中读取下一个字节。

2. read(byte b[]):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。

3. read(byte b[], int off, int len):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中的指定偏移量off处,并最多读取len个字节。

4. available():返回此输入流中可用的字节数量。

5. close():关闭此输入流并释放与这个流相关联的所有系统资源。

OutputStream类

OutputStream类是一个抽象类,定义了一些写数据的方法。OutputStream类的常用方法如下:

1. write(byte b):将指定的字节写入输出流。

2. write(byte b[]):将指定的字节数组写入输出流。

3. write(byte b[], int off, int len):将指定的字节数组写入输出流的指定偏移量off处,并最多写入len个字节。

第 2 页 共 9 页

4. close():关闭此输出流并释放与这个流相关联的所有系统资源。

三、字符流(Character Stream)

字符流以字符为单位读写数据。这些流用于读取和写入文本文件,以及用于处理字符数据。Java I/O流提供以下两个字符流的类:

1. Reader

2. Writer

Reader类

Reader类是一个抽象类,定义了一些读取字符数据的方法。Reader类的常用方法如下:

1. read():从输入流中读取一个字符。

2. read(char cbuf[]):从输入流中读取一定数量的字符,并将其存储在缓冲区数组cbuf中。

3. read(char cbuf[], int off, int len):从输入流中读取一定数量的字符,并将其存储在缓冲区数组cbuf中的指定偏移量off处,并最多读取len个字符。

4. ready():测试此输入流是否准备好被读取。

5. close():关闭此输入流并释放与这个流相关联的所有系统资源。

Writer类

Writer类是一个抽象类,定义了一些写字符数据的方法。Writer类的常用方法如下:

1. write(char c):将指定的字符写入输出流。

2. write(char cbuf[]):将指定的字符数组写入输出流。

第 3 页 共 9 页

3. write(char cbuf[], int off, int len):将指定的字符数组写入输出流的指定偏移量off处,并最多写入len个字符。

4. flush():刷新输出流。

5. close():关闭此输出流并释放与这个流相关联的所有系统资源。

四、过滤器流(Filter Stream)

过滤器流是一组装饰器模式下的类,它们增强了输入流和输出流的功能。Java I/O流提供以下几个过滤器流的类:

1. BufferedInputStream/BufferedOutputStream

2. DataInputStream/DataOutputStream

3. PushbackInputStream

4. FilterInputStream/FilterOutputStream

5. ByteArrayInputStream/ByteArrayOutputStream

6. ObjectInputStream/ObjectOutputStream

BufferedInputStream/BufferedOutputStream类

BufferedInputStream类和BufferedOutputStream类提高了I/O流的性能。这些类使用缓冲区来减少对磁盘的频繁读写操作。BufferedInputStream类和BufferedOutputStream类的常用方法如下:

1. BufferedInputStream(InputStream in):创建一个新的缓冲输入流。

2. BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流。

3. flush():刷新输出流。

第 4 页 共 9 页

DataInputStream/DataOutputStream类

DataInputStream类和DataOutputStream类允许程序读写基本数据类型。DataInputStream类和DataOutputStream类的常用方法如下:

1. readByte():从输入流中读取下一个字节,将其转换成一个byte值。

2. readChar():从输入流中读取下一个字符。

3. readDouble():从输入流中读取下一个double值。

4. readFloat():从输入流中读取下一个float值。

5. readInt():从输入流中读取下一个int值。

6. writeByte(int v):将一个byte值写入输出流。

7. writeChar(int v):将一个char值写入输出流。

8. writeDouble(double v):将一个double值写入输出流。

9. writeFloat(float v):将一个float值写入输出流。

10. writeInt(int v):将一个int值写入输出流。

PushbackInputStream类

PushbackInputStream类允许数据流回到输入流中。PushbackInputStream类的常用方法如下:

1. unread(byte[] b):将指定的字节数组插入到输入流中,以供下次读取。

2. unread(byte[] b, int off, int len):将指定的字节从缓冲区中的偏移量off处插入到输入流中,以供下次读取。

3. unread(int b):将指定的字节插入到输入流中,以供下次读取。

第 5 页 共 9 页

FilterInputStream/FilterOutputStream类

FilterInputStream类和FilterOutputStream类定义了输入流和输出流操作的一般过滤器接口。FilterInputStream类和FilterOutputStream类可以进行转换、加密、解密等一些特殊处理。FilterInputStream类和FilterOutputStream类的常用方法如下:

1. FilterInputStream(InputStream in):创建一个新的过滤输入流。

2. FilterOutputStream(OutputStream out):创建一个新的过滤输出流。

3. close():关闭此输入流并释放与这个流相关联的所有系统资源。

ByteArrayInputStream/ByteArrayOutputStream类

ByteArrayInputStream类和ByteArrayOutputStream类允许程序读写byte数组。ByteArrayInputStream类和ByteArrayOutputStream类的常用方法如下:

1. ByteArrayInputStream(byte[] buf):创建一个新的ByteArrayInputStream对象。

2. ByteArrayOutputStream():创建一个新的ByteArrayOutputStream对象。

3. toByteArray():将所有写入此输出流的数据转换成byte数组。

ObjectInputStream/ObjectOutputStream类

第 6 页 共 9 页

使用ObjectInputStream类和ObjectOutputStream类可以读入和写出Java对象。ObjectInputStream类和ObjectOutputStream类的常用方法如下:

1. ObjectInputStream(InputStream in):创建一个新的ObjectInputStream对象。

2. ObjectOutputStream(OutputStream out):创建一个新的ObjectOutputStream对象。

3. readObject():读取对象。

4. writeObject(Object obj):写出对象。

五、转换流(Conversion Stream)

转换流可将字节流转换为字符流,也可将字符流转换为字节流。Java I/O流提供以下两个转换流的类:

1. InputStreamReader

2. OutputStreamWriter

InputStreamReader类

InputStreamReader类将字节流转换为字符流。InputStreamReader类的常用方法如下:

1. InputStreamReader(InputStream in):创建一个新的InputStreamReader对象。

2. InputStreamReader(InputStream in, Charset cs):创建一个新的InputStreamReader对象,指定Encoding方式。

3. read():从输入流中读取一个字符。

4. read(char[] cbuf):从输入流中读取一定数量的字符,并将其存储在缓冲区数组cbuf中。

第 7 页 共 9 页

5. read(char[] cbuf, int offset, int length):从输入流中读取一定数量的字符,并将其存储在缓冲区数组cbuf中的指定偏移量offset处,并最多读取length个字符。

OutputStreamWriter类

OutputStreamWriter类将字符流转换为字节流。OutputStreamWriter类的常用方法如下:

1. OutputStreamWriter(OutputStream out):创建一个新的OutputStreamWriter对象。

2. OutputStreamWriter(OutputStream out, Charset cs):创建一个新的OutputStreamWriter对象,指定Encoding方式。

3. write(char[] cbuf):写出字符数组。

4. write(String str):写出字符串。

5. flush():刷新输出流。

6. close():关闭此输出流并释放与这个流相关联的所有系统资源。

六、推回输入流(Pushback Stream)

推回输入流可以将已读的数据重新推回输入流中。Java I/O流提供以下一个推回输入流的类:

1. PushbackInputStream

PushbackInputStream类

PushbackInputStream类允许程序将读取的byte数据插回流中,以便再次读取。PushbackInputStream类的常用方法如下:

1. pushback(byte[] b):将指定的字节数组插入到输入流中,以供下次读取。

第 8 页 共 9 页

2. pushback(byte[] b, int off, int len):将指定的字节从缓冲区中的偏移量off处插入到输入流中,以供下次读取。

3. pushback(int b):将指定的字节插入到输入流中,以供下次读取。

4. read():从输入流中读取一个字节。

七、其他特殊流

除以上几种常见的流类型之外,Java I/O流还提供了其他几种特殊流:

1. FileInputSteam/FileOutputStream

2. RandomAccessFile

3. PipedInputStream/PipedOutputStream

4. PrintStream

其中FileInputStream/FileOutputStream类用于读取或写入文件,RandomAccessFile类用于文件读写的随机访问,PipedInputStream/PipedOutputStream类用于管道通信,PrintStream类将数据格式化输出。

八、总结

Java I/O流是Java编程中不可或缺的部分,因此掌握Java I/O流的常用API及其用法是非常有必要的。本文对于Java I/O流中的常用API及其用法进行了详细介绍,希望对Java开发者有所帮助。在实际应用中,开发者们可以根据自己的需要选择不同的I/O类和接口来满足其I/O需求。

第 9 页 共 9 页


本文标签: 输入 读取 流中 输出 字节