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 页
版权声明:本文标题:Javaio流的常用API及其用法详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703169129h440769.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论