FileInputStream和FileOutputStream的那些事儿

简介

FileInputStream是输入流,FileOutputStream是输出流,前者负责把目标数据输入,后者则输出到目标存储,这两者都针对的是字节流

这里我们必须要明确一点,任何数据在计算机中都是字节,所以我们利用字节流可以传输任何类型的数据,不限于文件

输入流

咱们从构造函数开始瞅瞅
FileInputStream构造函数.jpg

构造方法都是让我们写入一个文件,从而与之建立联系

读方法
image.png

方法一:从输入流中读入一个字节
方法二:从输入流中读入一串字节来填满字节数组
方法三:把数组从起始位置填充到结束位置

输出流

构造函数类似,都是让我们填一个文件,然后与之建立联系

写方法


write方法.jpg

方法一:把字节数组输出
方法二:从字节数组中的开始位置到结束位置的字节输出
方法三:输出一个字节

实例

需求:把一张图片复制到指定文件夹

import java.io.*;

public class IOMain {
    public static void main(String[] args) throws Exception{
        FileStream();
    }
    public static void FileStream() {
        FileInputStream fis=null;
        FileOutputStream fos=null;
        try {
            //创建一个输入流和输出流
            fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\IO\\Test.jpg");
            fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\IO\\TestCopy.jpg");
            byte[] b=new byte[1024];
            
            int num=0;
            while((num=fis.read(b))!=-1)
            {
                fos.write(b);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            //分别关闭输入和输出流
            try {
                fis.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                fos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
    
}

总结

FileInputStream和FileOutputStream分别对应着输入流,输出流,他们是针对任何数据的,因为我们的数据都可以转换成字节流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。