栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java IO流 02:文件流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java IO流 02:文件流

一、java.io.FileInputStream
  • FileInputStream:万能的文件字节输入流,任何类型的文件都可以采用这个流来读。
    ——以字节的方式,完成输入的操作,完成读的操作(硬盘 >>> 内存)
  • FileInputStream中常用的方法:
    • intread():从输入流中读取数据的下一个字节;如果读取不到数据时返回-1。
    • intread(byte[] b):byte数组中一次最多读取 b.length 个字节,返回读取到的字节数量。
    • intavailable():返回流当中剩余的没有读到的字节数量。
    • longskip(long n):跳过几个字节不读。
    • voidclose():关闭此输入流并释放与该流关联的所有系统资源。
    public class FileInputStreamTest01 {
        public static void main(String[] args) {
            //定义一个文件字节输入流
            FileInputStream fis = null;
            try {
                //new一个文件字节输入流并捕捉异常
                fis = new FileInputStream("src/com/javaSE/io/tempfile");
    
                //===========================尝试read()方法================================
                
    
                //==========================尝试read(byte[] b)方法===========================
                
    
                //============================尝试available()方法=============================
                
    
                //===========================尝试skip(long l)方法=============================
                fis.skip(3);//跳过几个字节不读
                System.out.println(fis.available());//获得还剩余的字节数
                byte[] bytes = new byte[fis.available()];
                System.out.println(new String(bytes,0,fis.read(bytes)));
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                //如果有文件输入流则关闭此文件输入流并释放与此流有关的所有系统资源
                if (fis != null) {
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

二、java.io.FileOutputStream
  • FileOutputStream:万能的文件字节输出流,任何类型的文件都可以采用这个流来写。
    ——以字节的方式,完成输出的操作,完成写的操作(内存 >>> 硬盘)
  • FileOutputStream中常用的方法:
    • voidwrite(byte[] b):将 b.length 个字节从指定 byte 数组写入此文件输出流中。
    • voidwrite(byte[] b, int off, int len):将指定 byte 数组中从指定下标开始的 len 个字节写入此文件输出流。
    public class FileOutputStreamTest01 {
        public static void main(String[] args) {
            FileOutputStream fos = null;//定义一个文件字节输出流
            try {
                //输出到指定路径的文件中并覆盖其内部全部内容(谨慎使用),文件不存在的时候会自动新建
                //fos = new FileOutputStream("E:\temporaryFiles");
                //输出到指定路径的文件中(append为ture时为追加到文件末尾),文件不存在的时候会自动新建
                fos = new FileOutputStream("src/com/javaSE/io/tempfile", true);
    
                byte[] bytes = "你好世界hallo world".getBytes();//将字符床转为byte数组
                fos.write(bytes);
    
                fos.flush();//输出刷新(输出流必备)
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally{
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

三、使用FileInputStream + FileOutputStream完成文件的拷贝
  • 拷贝的过程应该是一边读,一边写。
  • 使用以上的字节流拷贝文件的时候,文件类型随意,万能的。什么样的文件都能拷贝。
public class CopyTest01 {
    public static void main(String[] args) {
        //定义文件输入输出流
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            //创建文件输入输出流
            fis = new FileInputStream("D:\资料\动力节点\20210419-JavaSE图书管理系统项目实战\视频\01-项目简介.mp4");
            fos = new FileOutputStream("E:/01-项目简介.mp4");
            //创建一个byte数组
            byte[] bytes = new byte[1024 * 1024];//1024*1为1kb,1024*1024为1mb
            int readCount = 0;//读取计数
            while ((readCount = fis.read(bytes)) != -1) {//读取,读取多少存到数组多少
                fos.write(bytes,0,readCount);//编写,存到数组多少编写多少
            }
            //输出刷新(输出流必备)
            fos.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

四、FileReader & FileWriter
  • FileReader & FileWriter :文件字符 输入&输出 流,只能读取普通文本。
  • FileReader & FileWriter 与 FileInputStream & FileOutputStream 使用方式相似。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号