Java FileInputStream输入流详解(3大用法步骤)

Java FileInputStream输入流详解(3大用法步骤)-mikechen

Java FileInputStream和FileOutputStream主要用于文件的读取与写入,本篇主讲FileInputStream的作用与使用@mikechen

什么是FileInputStream

FileInputStream流被称为文件字节输入流,意思指对文件数据以字节的形式进行读取操作,一般用于程序读取文件系统中的文件,比如:读取图片视频等文件。

 

Java FileInputStream输入流详解(3大用法步骤)-mikechen

常用子类有:

  • FileInputStream 文件字节输入流;
  • BufferedInputStream 缓冲字节输入流;
  • ObjectInputStream 对象字节输入流;

 

FileInputStream的构造方法有如下三种:

1.FileInputStream(File file)

FileInputStream(File file) 
通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名

2.FileInputStream(FileDescriptor fdObj) 

FileInputStream(FileDescriptor fdObj) 
创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的现有连接到一个实际的文件

3.FileInputStream(String name) 

FileInputStream(String name) 
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名

常用的有以下两个:

1)FileInputStream(File file):参数传入一个File类型的对象;

2)FileInputStream(String name):参数传入文件的路径。

 

1. read​()方法

read() 从输入流中读取一个字节返回int型变量,若到达文件末尾,则返回-1

//从此输入流中读取一个数据字节。
public int read();

 

2.read(byte[] b)方法

从输入流中读取 b.length 个字节到字节数组中,返回读入缓冲区的总字节数,若到达文件末尾,则返回-1。

//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
public int read(byte[] b);

//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。
public int read(byte[] b,int off,int len);

 

3.read(byte[] b,int off,int len)方法

从输入流中读取最多len个字节到字节数组中(从数组的off位置开始存储字节),当len为0时则返回0,如果len不为零,则该方法将阻塞,直到某些输入可用为止。

public int read(byte[] b,int off,int len) throws IOException

 

4.close() 方法

关闭此输入流并释放与该流关联的所有系统资源—即释放与实际文件的连接。

public void close() throws IOException

 

1.使用步骤

第一步:打开流,即创建字节文件输入流对象;

第二步:读数据,即通过流读取内容;

第三步:释放资源,即用完后关闭流资源。

 

2.代码示例

详细代码示例如下:

public class FileInputStreamDemo {
    public void demo() throws Exception{
        //1:创建字节文件输入流
        FileInputStream fis  = new FileInputStream("mikechen.txt") ;
        int by = 0 ;

       //2:开始读数据
        while((by=fis.read())!=-1) {
            System.out.print((char)by);
        }   
     
        //3:释放资源
        fis.close();       
    }
}

 

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法