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()方法从文件中一个字节一个字节地读取数据,这样我们就可以从文件中读取整个数据。