Java IO流:深入解析FileInputStream类

2023-11-17 11:00:32 浏览数 (1)

哈喽,各位小伙伴们,你们好,我是喵手。

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,一群人方能走的更远。

  我是一名Java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在Java开发中,文件操作是很常见的需求。而在文件的读取过程中,FileInputStream类是一种非常常用的类,它可以读取任意类型的文件,包括文本、二进制、音频、视频等。本文将详细介绍Java中的FileInputStream类。

摘要

  本文将深入介绍Java中的FileInputStream类,包括它的作用、实现原理、应用场景、优缺点等方面。通过本文的阅读,读者将深入了解FileInputStream类的工作原理和使用方法。

FileInputStream类

简介

  FileInputStream类是Java I/O系统中的一个输入流类,它用于从文件中读取字节流数据。FileInputStream类继承于InputStream,是InputStream的一个子类。该类的重要方法有read()方法和close()方法。其中,read()方法用于读取文件中的字节数据,close()方法用于关闭文件输入流。

  FileInputStream类的构造方法有多种,可以根据需要选择不同的构造方法。例如,可以使用FileInputStream(String name)构造方法来创建一个从指定文件名读取数据的FileInputStream对象,也可以使用FileInputStream(File file)构造方法来创建一个从指定文件读取数据的FileInputStream对象。

源代码解析

下面是FileInputStream类的源代码:

代码语言:java复制
public class FileInputStream extends InputStream {

    // 从文件中读取字节的方法
    public int read() throws IOException {
        return 0;
    }

    // 关闭文件输入流的方法
    public void close() throws IOException {
    }

}

  从源代码中可以看出,FileInputStream类是InputStream类的子类,因此它可以使用InputStream类中定义的方法和属性。此外,FileInputStream类中还定义了read()方法和close()方法,用于从文件中读取数据和关闭文件输入流。

如下是部分源码截图展示:

在这里插入图片描述在这里插入图片描述

应用场景案例

  FileInputStream类常用于读取图片、音频、视频等二进制文件,也可以用于读取文本文件。下面是一个使用FileInputStream类读取文本文件的示例:

代码语言:java复制
package com.example.javase.io.fileProject;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * @Author 喵手
 * @Date 2023-10-19 23:19
 */
public class FileInputStreamTest {
    //读取文本文件
    public static void testFile_1() {
        try {
            FileInputStream fis = new FileInputStream("testDoc.txt");
            int c;
            while ((c = fis.read()) != -1) {
                System.out.print((char) c);
            }
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        testFile_1();
    }
}

  在该示例中,使用FileInputStream类读取名为"testDoc.txt"的文本文件,并将文件内容输出到控制台。

根据如上测试用例,如下是上述案例执行结果:

image.pngimage.png

优缺点分析

FileInputStream类具有以下优点:

  • 支持对各种类型的文件进行读取操作,包括文本、二进制、音频、视频等文件。
  • 读取效率高,适用于大文件的读取操作。

但是FileInputStream类也存在一些缺点:

  • 该类只能读取字节数据,无法直接读取文本数据。需要手动转换字节数据为字符串。
  • 无法直接读取压缩文件中的数据,需要使用压缩解压工具进行解压缩。

类代码方法介绍

FileInputStream类中主要的方法有:

  • public int read():从文件中读取下一个字节的数据,并返回该字节。
  • public int read(byte[] b):从文件中读取一组字节数据,并将这些字节数据存储到字节数组b中。
  • public void close():关闭文件输入流,释放与该输入流相关联的所有资源。

测试用例

下面是一个使用FileInputStream类读取图片文件的示例:

代码语言:java复制
    //读取图片文件
    public static void testFile_2() {
        try {
            FileInputStream fis = new FileInputStream("java.jpg");
            int c;
            while ((c = fis.read()) != -1) {
                System.out.print((char) c);
            }
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        testFile_2();
    }

  在该示例中,使用FileInputStream类读取名为"java.jpg"的图片文件,并将读取到的数据存储到缓冲区中,供后续处理使用。

根据如上测试用例,如下是上述案例执行结果:

在这里插入图片描述在这里插入图片描述

测试代码分析:

  这段代码使用 FileInputStream 类来读取名为 "java.jpg" 的图片文件。首先,使用 try-catch 语句来捕捉可能出现的 IOException 异常。在 try 块中,创建一个 FileInputStream 对象来打开文件,然后使用 while 循环来读取文件中的内容。在每次循环中,使用 read() 方法来读取一个字节,并将其赋值给变量 c,如果读取到的字节为 -1,则表示已到达文件的末尾。在循环中,将每个字节转换为字符并打印出来。最后,在 finally 块中关闭 FileInputStream 对象。在 main() 方法中,调用 testFile_2() 方法来执行读取文件的操作。

全文小结

  本文详细介绍了Java中的FileInputStream类,包括它的作用、实现原理、应用场景、优缺点等方面。在实际的Java开发中,FileInputStream类是一个非常常用的类,它可以帮助开发者快速、高效地读取各种类型的文件。

总结

  通过本文的介绍,读者应该已经了解了Java中的FileInputStream类的基本原理和使用方法。在实际开发中,应根据需要选择不同的构造方法和读取方式,以便获得更好的读取效果。同时,也需要注意该类的一些缺点,以便在使用过程中做好相应的处理。

... ...

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞