Java FileInputStream

原文:https://www.studytonight.com/java-file-io/java-fileinputstream-class

在本教程中,我们将学习 Java 中的 FileInputStream 及其各种方法。这个类从文件中读取一个字节流,属于 java.io 包。

句法

我们可以看到FileInputStream 类的语法声明,默认情况下它继承了 InputStream 类,这意味着我们可以用FileInputStram 类的对象调用这个类的所有方法。

public class FileInputStream extends InputStream

方法

下表给出了FileInputStream 类的方法及其用途:

| 方法 | 描述 | | int available() | 此方法用于返回可以从输入流中读取的估计字节数。 | | int read() | 此方法用于从输入流中读取数据字节。 | | int read(byte[] b) | 该方法用于从输入流中读取多达**b.length**字节的数据。 | | int read(byte[] b, int off, int len) | 该方法用于从输入流中读取多达**len** 字节的数据。 | | long skip(long x) | 此方法用于跳过并丢弃输入流中的 x 字节数据。 | | FileChannel getChannel() | 此方法用于返回与FileInputStream关联的唯一文件通道对象。 | | FileDescriptor getFD() | 此方法用于返回文件描述符对象。 | | protected void finalize() | 此方法用于确保在不再引用FileInputStream时调用 close 方法。 | | void close() | 此方法用于关闭流。 |

从文件读取数据的FileInputStream示例

下面给出的例子将在FileInputStream 类及其read()方法的帮助下从 myfile.txt 中读取数据。read()方法一次只读取一个字节,因此,我们在循环内部调用,这样它就可以读取所有字符。这将返回文件末尾的-1,我们将在那里停止。

import java.io.FileInputStream;
import java.io.IOException;
public class StudyTonight 
{
    public static void main(String[] args) throws IOException 
    {  
        try
        {    
            FileInputStream fin=new FileInputStream("E:\\studytonight\\myfile.txt");    
            int i=0;    
            while((i=fin.read())!=-1){    
                System.out.print((char)i);    
            }      
            fin.close();  
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }    
    }  
}

你好,今晚学习

available()方法示例

在下面给出的程序中,我们实现了一个可用的()方法来检查输入源中可供读取的字节数。正如我们第一次调用 available()方法时可以看到的,它显示有 18 个字节可供读取。现在我们调用 read()函数两次,这样它将减少从文件中读取的字节数,因此它将打印 16 个可用字节。我们可以使用可用方法来检查从输入源读取的可用字节数。

import java.io.FileInputStream;
public class StudyTonight
{
    public static void main(String args[])
    {
        try 
        {
            FileInputStream input = new FileInputStream("E:\\studytonight\\file.txt");
            System.out.println("Available bytes = " + input.available());
            input.read();
            input.read();
            System.out.println("Available bytes = " + input.available());
            input.close();
        }
        catch (Exception e)
        {
            System.out.println("Error: "+e.toString());
        }
    }
}

可用字节= 18 可用字节= 16

file.txt

Hello Studytonight

skip()方法示例

在给定的程序中,我们实现了 skip()方法。此方法将参数作为要从输入流中跳过的字节数。在下面的程序中,我们通过传递 5 作为参数来调用 skip 方法,这样它将跳过输入流中的前 5 个字节,因此当我们从该流中读取数据时,它将返回前 5 个字节之后的数据。例如,在给定的文件中,我们有一个数据“你好今晚研究”,我们跳过了前 5 个字节,所以它将直接打印“今晚研究”

import java.io.FileInputStream;
public class StudyTonight
{
    public static void main(String args[])
    {
        try 
        {
            FileInputStream input = new FileInputStream("E:\\studytonight\\file.txt");
            input.skip(5);
            int ch=0;
            while(ch!=-1)
            {
                System.out.print((char)ch);
                ch=input.read();
            }        
            input.close();
        }
        catch (Exception e)
        {
            System.out.println("Error: "+e.toString());
        }
    }
}

今晚学习

file.txt

Hello Studytonight

结论

在本教程中,我们学习了如何从给定文件中读取字节流。为了从文件中读取数据,我们使用了FileInputStream 类。

read()方法从文件中一个字节一个字节地读取数据,这样我们就可以从文件中读取整个数据。