介绍java的I/O流

本文详细介绍了Java中的I/O流,包括字节流(如InputStream和OutputStream)、字符流(Reader和Writer)、缓冲流、对象流和NIO(Non-blockingI/O)的概念、类及其方法。掌握这些对于高效编程至关重要。
摘要由CSDN通过智能技术生成

Java中的I/O流是Java程序与外部环境(如文件,网络,终端设备等)进行通信的主要方式之一。I/O流最基本的概念就是流,它是一种数据的传输方式,将数据从一个地方传递到另一个地方。在Java中,I/O流主要分为字节流和字符流两种,其中字节流可以用于读写任何类型的数据,而字符流则更适用于读写文本数据。下面将详细介绍Java的I/O流。

1.字节流

字节流的主要类有InputStreamOutputStream,分别表示从数据源读取字节和向数据源写入字节。

1.1 InputStream

InputStream是字节输入流的抽象基类,其常见子类有FileInputStreamByteArrayInputStreamPipedInputStream等。常用方法有:

  • int read():从输入流中读取一个字节并返回,如果已经到达流的末尾,则返回-1。
  • int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。返回实际读取的字节数。

1.2 OutputStream

OutputStream是字节输出流的抽象基类,其常见子类有FileOutputStreamByteArrayOutputStreamPipedOutputStream等。常用方法有:

  • void write(int b):将指定的字节写入输出流。
  • void write(byte[] b):将b.length个字节从指定的字节数组写入此输出流。

2.字符流

字符流可以用于读写文本数据,其主要类有ReaderWriter

2.1 Reader

Reader是字符输入流的抽象基类,其常见子类有FileReaderInputStreamReaderStringReader等。常用方法有:

  • int read():读取单个字符并返回,如果已经到达流的末尾,则返回-1。
  • int read(char[] cbuf):将字符读入到数组cbuf中,并返回实际读取的字符数。

2.2 Writer

Writer是字符输出流的抽象基类,其常见子类有FileWriterOutputStreamWriterStringWriter等。常用方法有:

  • void write(int c):将指定字符写入输出流。
  • void write(char[] cbuf):将cbuf.length个字符从指定的字符数组写入此输出流。

3.缓冲流

缓冲流是I/O流的一个重要概念,主要分为BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter。缓冲流可以提高I/O操作的效率,减少读写操作对底层资源的频繁访问。缓冲流的用法与字节流和字符流类似。

4.对象流

对象流可以用于读写Java对象,其主要类有ObjectInputStreamObjectOutputStream。在使用对象流读写Java对象时,要求对象必须实现Serializable接口。其中,ObjectInputStream的常用方法有readObject(),可用于读取Java对象;ObjectOutputStream的常用方法有writeObject(Object obj),可用于将Java对象写入输出流中。

5.转换流

转换流可以将字节流转换为字符流和字符流转换为字节流,其主要类有InputStreamReaderOutputStreamWriter。常用方法有:

  • InputStreamReader(InputStream in):创建一个新的InputStreamReader,允许读取指定的字节输入流。
  • InputStreamReader(InputStream in, Charset cs):创建一个新的InputStreamReader,使用指定的字符集从指定的字节输入流读取数据。
  • OutputStreamWriter(OutputStream out):创建一个新的OutputStreamWriter,允许指定的字节输出流。
  • OutputStreamWriter(OutputStream out, Charset cs):创建一个新的OutputStreamWriter,使用指定的字符集将流写入指定的字节流。

6. NIO

Java NIO(New IO)是JDK 1.4引入的新I/O API,它提供了一种用于读和写数据的非阻塞方式。NIO核心的部分是通道和缓冲区,通道表示实体连接,如文件或套接字,缓冲区是一个可以写入数据和从中读取数据的内存块。NIO还提供了选择器(Selector)等工具,使得可以同时处理多个通道的I/O操作。

以上是Java的I/O流的详细介绍,从字节流、字符流、缓冲流、对象流、转换流到NIO的内容都被涵盖了。I/O流是Java编程中非常重要的一部分,它可以用于读写各种数据类型和各种数据源。对于Java的I/O流,了解其原理和使用方法对于编写高质量的Java代码非常有帮助。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值