• 38、使用IO流进行文件拷贝


    使用IO流进行文件拷贝

    需求:在项目的根目录里面创建一个java.txt的文件,然后将这个文件拷贝到file文件夹里面并且重命名为good.txt文件
    先以流的方式将java.txt文件读取到内存中,然后再以流的方式将内存中的内容写出到硬盘里面

    package com.sutaoyu.IO;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class IO_test_1 {
        public static void main(String[] args) {
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream("java.txt");
                fos = new FileOutputStream("file" + File.separator + "good.txt");
                
                byte[] arr = new byte[1024];
                int length;
                while((length = fis.read(arr)) != -1) {
                    fos.write(arr,0,length);
                }
            }catch(FileNotFoundException e) {
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }finally {
                try {
                    fis.close();
                    fos.close();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    }

    使用缓冲流进行文件拷贝

    Java中提供了BufferedInputStream和BufferedOutputStream缓冲流用来读取和写出, BufferedInputStream读取时会创建一个长度为8192的byte类型数组,程序一次读取8192个字节数据到数组中 使用缓冲流之后就不用再自定义byte类型数组了。

    package com.sutaoyu.Buffer;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Buffer_test_1 {
        public static void main(String[] args) {
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
            try {
                 //使用缓冲流装饰一下
                bis = new BufferedInputStream(new FileInputStream("java.txt"));
                bos = new BufferedOutputStream(new FileOutputStream("file" + File.separator + "good.txt"));
                
                int temp;
                while((temp = bis.read()) != -1) {
                    bos.write(temp);
                }
                
            }catch(FileNotFoundException e) {
                e.printStackTrace();
                
            }catch(IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    bis.close();
                    bos.close();
                }catch(IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    使用自定义数组和buffer的图解

    使用自定义数组:

    使用Buffer缓冲流:

     两者在效率上区别不大,其实java提供的BufferedInputStream和BufferedOutputStream底层使用的也是byte类型的数组,开发中这两种方式都可以使用。

    jdk7的新写法

    在jdk7中新加入了AutoCloseable接口,IO流中的类都实现了这个接口,这样在读取或者写出操作结束之后,系统会自动close相关资源,开发者不需要再手动close了

    package com.sutaoyu.Buffer;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Buffer_test_2 {
        
        public static void main(String[] args) {
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream("monkey.txt");
                fos = new FileOutputStream("rabbit.txt");
                
                int length;
                while((length = fis.read()) != -1) {
                    fos.write(length);
                }
            }catch(FileNotFoundException e) {
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }
    }
    }
  • 相关阅读:
    刷题力扣面试题 16.01. 交换数字
    git branch 分支操作
    数组的应用 创建的语法
    地址的替换,替换
    数组的扩容
    数组参数
    minio服务在linux安装部署 单机
    android studio出现 Could not initialize class com.android.sdklib.repository.AndroidSdkHandler
    Wireshark分割、合并pcap文件
    elasticsearch 删除index
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10140090.html
Copyright © 2020-2023  润新知