Java中的Java.io.FileInputStream类

FileInputStream对于以字节序列的形式从文件中读取数据很有用。FileInputStream用于读取诸如图像数据等原始字节流。为了读取字符流,请考虑使用FileReader。

构造函数和说明

  • FileInputStream(File file):创建一个输入文件流以从指定的File对象中读取。
  • FileInputStream(FileDescriptor fdobj):创建输入文件流以从指定的文件描述符中读取。
  • FileInputStream(String name):创建一个输入文件流,以从具有指定名称的文件读取。

重要方法:

  • int read():从此输入流中读取一个字节的数据。
    语法: public int read()
             throws IOException
    返回:数据的下一个字节,如果到达文件的末尾,则返回 -1。
    抛出: 
    IOException
  • int read(byte [] b):从此输入流中将b.length个字节的数据读入一个字节数组。
    语法: public int read(byte [] b)
             throws IOException
    参数:
     b  - 读取数据的缓冲区。
    返回:读入缓冲区的总字节数,或-1。
    抛出: 
    IOException
  • int read(byte [] b,int off,int len):从此输入流中将len个字节的数据读入一个字节数组。
    语法: public int read(byte [] b,
           int off,
           int len)
             throws IOException
    参数:
     b  - 读取数据的缓冲区。
    off  - 目标数组中的起始偏移量b
    len  - 读取的最大字节数。
    返回:读入缓冲区的总字节数,或-1 
     抛出:
    NullPointerException
    IndexOutOfBoundsException
  • long skip(long n):跳过并丢弃输入流中的n个字节的数据。
    语法: public long skip(long n)
              throws IOException
    参数:
     n  - 要跳过的字节数。
    返回:跳过的实际字节数。
    抛出:
     IOException
  • int available():返回可从此输入流中读取(或跳过)的剩余字节数的估计值。
    语法: public int available()
                  throws IOException
    返回:可读取的剩余字节数的估计值 
     抛出:
     IOException
  • void close():关闭此文件输入流并释放与该流关联的所有系统资源。
    语法: public void close()
               throws IOException
    指定者:
    在AutoCloseable接口中关闭
    覆盖:
    在类InputStream中关闭
    抛出: 
    IOException
  • FileDescriptor getFD():返回FileDescriptor对象,该对象表示与此FileInputStream使用的文件系统中的实际文件的连接。
    语法: public final FileDescriptor getFD()
                               throws IOException
    返回:与此流关联的文件描述符对象。
    抛出: IOException
  • FileChannel getChannel():返回与此文件输入流关联的唯一FileChannel对象。
    语法: public FileChannel getChannel()
     返回:与此文件输入流关联的文件通道
  • void finalize():确保在没有更多引用时调用此文件输入流的close方法。
    语法: protected void finalize()
                     throws IOException
    覆盖:在类Object中finalize
     抛出: IOException

使用FileInputStream从文件中读取数据的步骤

  • 首先,将文件附加到FileInputStream,如下所示:
    FileInputStream fileInputStream = new FileInputStream(“file.txt”);
  • 这将使我们能够从文件中读取数据。然后,要从文件中读取数据,我们应该从FileInputStream读取数据为;
    CH = fileInputStream.read();

    当没有更多的数据可供读取时,read()方法返回-1;

  • 然后我们应该将监视器附加到输出流。为了显示数据,我们可以使用System.out.print。
    System.out.print(CH);

执行:

import java.io.*;
//Java program demonstrating FileInputStream 
class ReadFile
{
    public static void main(String args[]) throws IOException
    {

        //attach the file to FileInputStream
        FileInputStream fin= new FileInputStream("file1.txt");

        //illustrating getChannel() method
        System.out.println(fin.getChannel());

        //illustrating getFD() method
        System.out.println(fin.getFD());

        //illustrating available method
        System.out.println("Number of remaining bytes:"+fin.available());

        //illustrating skip method
        /*Original File content:
        * This is my first line
        * This is my second line*/
        fin.skip(4);
        System.out.println("FileContents :");
        //read characters from FileInputStream and write them
        int ch;
        while((ch=fin.read())!=-1)
            System.out.print((char)ch);
        
        //close the file
        fin.close();
    }
}

输出:

sun.nio.ch.FileChannelImpl@1540e19d
java.io.FileDescriptor@677327b6
Number of remaining bytes:45
FileContents :
 is my first line
This is my second line

BufferedInputStream可用于从文件中一次读取一个充满数据的缓冲区。这提高了执行速度。

 
转载请保留页面地址:https://www.breakyizhan.com/java/4306.html
扫描二维码添加微信 
  • ,每次淘宝领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘50元优惠券!添加微信后回复机械键盘即可领取!
    支持我们,就用微信淘宝!