📜  Java InputStream类(1)

📅  最后修改于: 2023-12-03 15:15:56.208000             🧑  作者: Mango

Java InputStream类介绍

InputStream是Java IO库中的最常用的类之一,它代表了一个输入字节流,可以读取二进制数据。简单而言,它可以让您从输入源中读取数据,例如文件、网络连接、管道等。InputStream类是一个抽象类,因此不能直接使用它,您必须使用其子类来处理具体的输入源。一下是InputStream类的一些重要特点:

  • InputStream类是一个抽象类,因此不能直接使用它。尽管如此,该类提供了许多抽象方法,这些方法必须在其子类中实现才能使其具有功能。
  • InputStream之间的代码复制非常容易,可以快速将一个InputStream读取的数据从一个地方传输到另一个地方,而不用关心数据的实际内容。
  • InputStream类具备丰富的功能,其中包括读取数据、跳过数据和关闭输入流等。
InputStream类的构造函数

以下是InputStream类的常用构造函数:

InputStream is = new FileInputStream("filename.txt");

在这个例子中,我们使用FileInputStream类来创建一个输入流。该输入流从名称为“filename.txt”的文件中读取数据。

您还可以使用ByteArrayInputStream类创建一个InputStream,该InputStream将数据读取到字节数组中:

InputStream is = new ByteArrayInputStream(bytes);
InputStream类的常用方法

InputStream提供了许多方法来读取数据。以下是一些最常用的方法:

  • int read(byte[] b) throws IOException: 从输入流读取一些字节数,并将它们存储到缓冲区数组b中。
  • int read(byte[] b, int off, int len) throws IOException: 从输入流读取最多len字节的数据,并将其存储在偏移量为off的缓冲区数组b中。
  • long skip(long n) throws IOException: 从输入流中跳过并丢弃n个字节数据。
  • int available() throws IOException: 返回可以从该输入流中读取的估计字节数。
  • void close() throws IOException: 关闭此输入流并释放与该流关联的所有系统资源。
InputStream类的应用举例

以下是一个简单的Java程序,演示如何使用InputStream读取一个文本文件:

import java.io.*;
public class Main {
  public static void main(String[] args) {
    try {
      InputStream is = new FileInputStream("filename.txt");
      int c;
      while ((c = is.read()) != -1) {
        System.out.print((char) c);
      }
      is.close();
    } catch (IOException e) {
      System.out.println("IOException:" + e);
    }
  }
}

在这个例子中,我们使用FileInputStream创建一个InputStream对象,该对象读取名称为“filename.txt”的文件。然后使用while循环,以每次读取一个字节的形式,从输入流中读取数据,并将其打印到控制台。最后,我们使用close()方法显式关闭InputStream。

总结

InputStream是Java IO库中最常用的类之一。它提供了许多方法,可用于读取数据、跳过数据和关闭输入流等。InputStream可以用来读取任何类型的输入数据,尤其是二进制数据。在日常编程中,InputStream类通常与FileInputStream、ByteArrayInputStream等类一起使用。