IO操作中复制文件的方法

IO操作中复制文件的方法

IO操作中有一个transferTo函数,它可以完成文件的复制。但是它是jdk9以后才出现的方法,在jdk8是不能使用的。我们可以自己写一个和transferTO相同的方法来调用。

新方法

方便简单,一个函数搞定

总共列出三种写法,前两种比较相似。第三种是读写操作,读取文件fi的字节写入fo中

public class Fi3m2 {
    public static void main(String[] args) {
        File f = new File("b.txt");//创立一个File对象 f,括号里填要复制的文件
        try(FileInputStream fi = new FileInputStream(f)){//定义输入文件流fi 把对象f放在括号里
            fi.transferTo(new FileOutputStream("m2.txt"));
            //transferTo 把mfi移动到项目的根目录下,命名为m2.txt
        }catch (Exception e) {
        }
    }
}

public class Fi3m1 {
    public static void main(String[] args) {
        try(FileInputStream fi = new FileInputStream("a.txt");
            FileOutputStream    fo = new FileOutputStream("m1.txt")){
            fi.transferTo(fo);
        }catch (Exception e){}
    }
}

public class Fi3m3 {
    public static void main(String[] args) {
        try(FileInputStream fi = new FileInputStream("a.txt");
            FileOutputStream fo = new FileOutputStream("m3.txt")){
                fo.write(fi.readAllBytes());
            }catch (Exception e){}
            }
}


自己编写copyFile方法

  1. 首先编写一个copyFile方法,形参设为 File src, File dst, int b 它们的作用我在代码中已经注释明白
public static void copyFile(File src, File dst, int b) {//要复制的文件,目的地址,单次复制字节大小
        //try输入输出流
        try (FileInputStream fis = new FileInputStream(src);                        FileOutputStream fos = new FileOutputStream(dst)) {
             byte[] buf = new byte[b];
             int len = 0;
             while ((len = fis.read(buf)) >= 0) {
                //当文件大于等于零时执行写操作
                fos.write(buf, 0, len);
            }
        } catch (Exception e) {
        }
    }
  1. 打包

    将写好的方法打包成两个方法,涉及到了方法的重载

        public static void copyFile(File src, File dst) {
            copyFile(src,dst,8192);
        }
    
        public static void copyFile(String src,String dst) {
            copyFile(new File(src),new File(dst),8192);
        }
    
  2. 应用

        public static void main(String[] args) {
            File file1 = new File("d.txt");
            File file2 = new File("c.txt");
            System.out.println(file1.exists());
            copyFile("b.txt","c.txt");//直接输入文件名完成复制文件
            copyFile(file2,file1);//输入file对象也可以完成复制文件
        }
    
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值