java 实现文件夹的复制+删除原文件

该代码示例展示了如何使用Java进行文件和文件夹的复制操作,通过字节流确保照片等大文件能正确拷贝,并在完成后删除源文件。主要方法包括fileCopy用于单个文件的拷贝,以及fileCopy1递归处理整个目录的拷贝和删除。
摘要由CSDN通过智能技术生成
package zuoye01;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;

public class A {
    static File dir;
    static File target;
    /**
     * 拷贝文件(用的字节流,避免照片打不开的情况发生)
     * @param dir
     * @param target
     * @return
     * @throws IOException 
     */
    public static boolean fileCopy(File dir,File target) throws IOException {
        File f1=dir;
        //File f2=target;
        File f2=new File(target,dir.getName());
        FileInputStream fin=new FileInputStream(f1);//文件输入流--读
        FileOutputStream fout=new FileOutputStream(f2);//文件输出流--写
        byte[] b=new byte[fin.available()];
        System.out.println(fin.available());
        fin.read(b);
        fout.write(b);
        fout.close();
        fin.close();
        return true;
    }
    //实现文件夹的拷贝,拷贝后删除原目录
    /**
     * dir 先遍历--->在target目标路径创建一个新目录-->原文件{文件(拷贝)+目录(调用自身)}
     * @param source 原文件
     * @param target 目标文件路径
     * @return
     * @throws IOException 
     */
    public static void fileCopy1(File dir,File target) throws IOException {
        File f1=dir;
        File f2=target;
        //创建新目录
        f2=new File(f2,f1.getName());
        if(!f2.exists()) {
            f2.mkdir();
            //System.out.println("创建成功");
        }
        File[] files=f1.listFiles();
        if(files.length>0&&files!=null) {
            for(File f:files) {//遍历目录
                System.out.println("----"+f.getName());
                if(f.isFile()) {//文件--->拷贝
                    System.out.println(f.getName());//文件名
                    A.fileCopy(f, f2);
                    f.delete();    
                }
                if(f.isDirectory()) {//目录--->遍历
                    System.out.println(f.getName());
                    fileCopy1(f,f2);
                    f.delete();
                }
            }
        }
        f1.delete();
       // System.out.println("成功");
    }
/**
     * 
     * 测试方法
     * 
     */
    public static void main(String[] args) throws IOException {
        A.fileCopy1(new File("D:\\a"),new File("D:\\B"));//拷贝+删除
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值