您的位置:

掌握Java中InputStream类的方法

一、InputStream类概述

InputStream类是Java中所有输入流的超类,它提供了一组公共的方法供子类使用。InputStream类定义了诸如read()、skip()、available()等常用方法,这些方法在读取输入流时非常实用。

InputStream类是一个抽象类,不能被实例化,但是它有许多具体的子类,如FileInputStream、ByteArrayInputStream、PipedInputStream等。

下面是InputStream类的常用方法:

public abstract int read() throws IOException;
public int read(byte[] b) throws IOException;
public int read(byte[] b, int off, int len) throws IOException;
public long skip(long n) throws IOException;
public int available() throws IOException;
public void close() throws IOException;

二、数据读取

读取输入流中的数据通常使用InputStream类中的read()方法。该方法有三种用法,分别如下:

  • public abstract int read() throws IOException
  • 从输入流中读取一个字节的数据并返回,返回值是下一个字节的整数表示,如果已经到达流的末尾,则返回-1。read()方法通常使用循环读取输入流中的数据,直到结束。

        InputStream is = new FileInputStream("test.txt");
        int b;
        while((b = is.read()) != -1) {
            System.out.println(b);
        }
        is.close();
      
  • public int read(byte[] b) throws IOException
  • 从输入流中读取b.length个字节的数据,存储到byte数组b中,并返回实际读取的字节数。如果已经到达流的末尾,则返回-1。

        InputStream is = new FileInputStream("test.txt");
        byte[] b = new byte[1024];
        int len;
        while((len = is.read(b)) != -1) {
            System.out.println(new String(b, 0, len));
        }
        is.close();
      
  • public int read(byte[] b, int off, int len) throws IOException
  • 从输入流中读取长度为len字节的数据存储在byte数组b中,从off位置开始存储,并返回实际读取的字节数。如果已经到达流的末尾,则返回-1。

        InputStream is = new FileInputStream("test.txt");
        byte[] b = new byte[1024];
        int len;
        while((len = is.read(b, 0, 100)) != -1) {
            System.out.println(new String(b, 0, len));
        }
        is.close();
      

三、数据跳过

InputStream类中的skip()方法用于跳过指定字节的数据,它的返回值是跳过的字节数。

    InputStream is = new FileInputStream("test.txt");
    is.skip(10);
    byte[] b = new byte[1024];
    int len = is.read(b);
    System.out.println(new String(b, 0, len));
    is.close();

四、可用数据量

InputStream类中的available()方法用于获取输入流中可用的数据量。可用数据量指的是不阻塞情况下可以读取的数据量,因此它的值可能不等于实际数据量。

    InputStream is = new FileInputStream("test.txt");
    System.out.println(is.available());
    is.close();

五、输入流关闭

当不再需要使用InputStream类的对象时,应该及时关闭输入流对象,以释放系统资源。

    InputStream is = new FileInputStream("test.txt");
    // 执行读取操作
    is.close();

六、小结

InputStream类是Java中输入流的超类,它提供了一组常用的方法,如read()、skip()、available()等。通过InputStream类的方法,我们可以轻松地读取输入流中的数据,跳过指定字节的数据,获取可用数据量等。在使用完InputStream对象后,务必要及时关闭输入流对象。