Module  java.base
软件包  java.io

Class FileInputStream

    • 构造方法摘要

      构造方法  
      Constructor 描述
      FileInputStream​(File file)
      通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
      FileInputStream​(FileDescriptor fdObj)
      通过使用文件描述符 fdObj创建 FileInputStream ,该文件描述符表示与文件系统中的实际文件的现有连接。
      FileInputStream​(String name)
      通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
    • 方法摘要

      所有方法  接口方法  具体的方法  弃用的方法 
      Modifier and Type 方法 描述
      int available​()
      返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
      void close​()
      关闭此文件输入流并释放与流相关联的任何系统资源。
      protected void finalize​()
      已过时。
      finalize方法已被弃用。 为了执行清理而覆盖finalize子类应该修改为使用替代清理机制,并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
      FileChannel getChannel​()
      返回与此文件输入流相关联的唯一的FileChannel对象。
      FileDescriptor getFD​()
      返回表示与此 FileInputStream正在使用的文件系统中的实际文件的连接的 FileDescriptor对象。
      int read​()
      从该输入流读取一个字节的数据。
      int read​(byte[] b)
      从该输入流读取最多 b.length个字节的数据到一个字节数组。
      int read​(byte[] b, int off, int len)
      从该输入流读取最多 len个字节的数据到字节数组。
      long skip​(long n)
      跳过并从输入流中丢弃 n字节的数据。
    • 构造方法详细信息

      • FileInputStream

        public FileInputStream​(String name)
                        throws FileNotFoundException
        通过打开与实际文件的连接创建一个FileInputStream ,该文件由文件系统中的路径名称为name命名。 创建一个新的FileDescriptor对象来表示此文件连接。

        首先,如果有一个安全管理器,它的checkRead方法是以name参数作为参数来调用的。

        如果命名文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException

        参数
        name - 与系统相关的文件名。
        异常
        FileNotFoundException - 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
        SecurityException - 如果安全管理器存在,并且其 checkRead方法拒绝对该文件的读取访问。
        另请参见:
        SecurityManager.checkRead(java.lang.String)
      • FileInputStream

        public FileInputStream​(File file)
                        throws FileNotFoundException
        通过打开与实际文件的连接创建一个FileInputStream ,该文件由文件系统中的File对象file命名。 将创建一个新的FileDescriptor对象来表示此文件连接。

        首先,如果有一个安全管理器,它的checkRead方法被调用,由file参数表示的路径作为其参数。

        如果命名文件不存在,则是一个目录而不是常规文件,或者由于某种其他原因无法打开读取,因此抛出一个FileNotFoundException

        参数
        file - 要打开阅读的文件。
        异常
        FileNotFoundException - 如果文件不存在,是一个目录而不是常规文件,或者由于某些其他原因无法打开阅读。
        SecurityException - 如果安全管理器存在,并且其 checkRead方法拒绝对该文件的读取访问。
        另请参见:
        File.getPath()SecurityManager.checkRead(java.lang.String)
      • FileInputStream

        public FileInputStream​(FileDescriptor fdObj)
        通过使用文件描述符fdObj创建FileInputStream ,该文件描述符表示与文件系统中的实际文件的现有连接。

        如果有一个安全管理器,它的checkRead方法被调用,文件描述符fdObj作为参数来查看是否可以读取文件描述符。 如果读取访问被拒绝到SecurityException则抛出SecurityException

        如果fdObj为null,则抛出一个NullPointerException

        如果fdObjinvalid则此构造函数不会抛出异常。 但是,如果在结果流上调用方法来尝试流上的I / O,则抛出一个IOException

        参数
        fdObj - 要打开阅读的文件描述符。
        异常
        SecurityException - 如果安全管理器存在,并且其 checkRead方法拒绝对文件描述符的读取访问。
        另请参见:
        SecurityManager.checkRead(java.io.FileDescriptor)
    • 方法详细信息

      • read

        public int read​()
                 throws IOException
        从该输入流读取一个字节的数据。 如果没有输入可用,此方法将阻止。
        Specified by:
        read在类 InputStream
        结果
        数据的下一个字节,如果达到文件的末尾, -1
        异常
        IOException - 如果发生I / O错误。
      • read

        public int read​(byte[] b)
                 throws IOException
        从该输入流读取最多b.length个字节的数据为字节数组。 此方法将阻塞,直到某些输入可用。
        重写:
        readInputStream
        参数
        b - 读取数据的缓冲区。
        结果
        读入缓冲区的总字节数,或者如果没有更多的数据,因为文件的结尾已经到达, -1
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        InputStream.read(byte[], int, int)
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws IOException
        从该输入流读取高达len字节的数据到字节数组。 如果len不为零,则该方法将阻塞,直到某些输入可用; 否则,不会读取字节,并返回0
        重写:
        read在类 InputStream
        参数
        b - 读取数据的缓冲区。
        off - 目标阵列中的起始偏移量 b
        len - 读取的最大字节数。
        结果
        读取到缓冲区的总字节数,如果没有更多的数据,因为文件的结尾已经到达, -1
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负数, len为负数,或 len大于 b.length - off
        IOException - 如果发生I / O错误。
        另请参见:
        InputStream.read()
      • skip

        public long skip​(long n)
                  throws IOException
        跳过并从输入流中丢弃n字节的数据。

        由于各种原因, skip方法可能会跳过一些较小数量的字节,可能是0 如果n为负,则该方法将尝试向后跳。 如果后台文件不支持在当前位置的向后跳过,则抛出IOException 返回实际跳过的字节数。 如果它向前跳,它返回一个正值。 如果它向后跳,它返回一个负值。

        该方法可能会跳过比后备文件中剩余的字节更多的字节。 这不会产生异常,并且跳过的字节数可能包括超出后台文件的EOF的一些字节数。 尝试在跳过结束后从流中读取将导致-1表示文件的结尾。

        重写:
        skip在类 InputStream
        参数
        n - 要跳过的字节数。
        结果
        实际跳过的字节数。
        异常
        IOException - 如果n为负,如果流不支持查询,或者发生I / O错误。
      • available

        public int available​()
                      throws IOException
        返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 当文件位置超出EOF时返回0。 下一个调用可能是同一个线程或另一个线程。 这个多个字节的单个读取或跳过将不会被阻塞,但可以读取或跳过较少的字节。

        在某些情况下,非阻塞读取(或跳过)在缓慢时可能会被阻止,例如在慢速网络中读取大文件时。

        重写:
        availableInputStream
        结果
        可以从该输入流中读取(或跳过)而不阻塞的剩余字节数的估计。
        异常
        IOException - 如果此文件输入流已通过调用 close关闭或发生I / O错误。
      • close

        public void close​()
                   throws IOException
        关闭此文件输入流并释放与流相关联的任何系统资源。

        如果该流具有相关联的信道,则该信道也被关闭。

        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        重写:
        closeInputStream
        异常
        IOException - 如果发生I / O错误。
      • getFD

        public final FileDescriptor getFD​()
                                   throws IOException
        返回表示与此 FileInputStream正在使用的文件系统中的实际文件的连接的 FileDescriptor对象。
        结果
        与此流关联的文件描述符对象。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        FileDescriptor
      • getChannel

        public FileChannel getChannel​()
        返回与此文件输入流相关联的唯一的FileChannel对象。

        到目前为止 ,返回通道的初始值为position将等于从文件读取的字节数。 从该流读取字节将增加通道的位置。 通过显式地或通过阅读来改变频道的位置将会改变这个流的文件位置。

        结果
        与此文件输入流关联的文件通道
        从以下版本开始:
        1.4
      • finalize

        @Deprecated(since="9")
        protected void finalize​()
                         throws IOException
        已过时。 finalize方法已被弃用。 为了执行清理,覆盖finalize子类应被修改为使用替代的清理机制并删除覆盖的finalize方法。 当覆盖finalize方法时,其实现必须明确确保按照super.finalize()中所述调用super.finalize() 有关迁移选项的更多信息,请参阅Object.finalize()的规范。
        确保当这个文件输入流的 close方法没有更多的引用时被调用。
        重写:
        finalizeObject
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        close()