java文件的拷贝/复制

时间:2025-03-26 12:40:10

  用java完成两个文件之间可拷贝

先对源文件的目录进行遍历新建,接着目标对文件指定的相对路径下进行创建,以此完成拷贝

代码实现:

package iO;

import .*;
import ;

public class CopyAll {
    public static void main(String[] args) {
        //拷贝源
        File srcFile=new File("D:\\LC\\新建文件夹");
        //拷贝目标
        File destFile=new File("C:\\");
        //调用拷贝的方法
        copys(srcFile,destFile);
    }

    /*拷贝方法*/
    private static void copys(File srcFile, File destFile) {
        //如果当前的是文件的话
        if(()){
            /*是文件的时候需要拷贝
            * 边读边写*/
            FileInputStream in=null;
            FileOutputStream out=null;
            try {
                in=new FileInputStream(srcFile);//读取
                /*目标目录文件+源盘符后的文件路径
                * 三目运算符:如果文件路径结尾没有有"\\"则加上*/
                String sof=(().endsWith("\\") ? () : ()+"\\")+().substring(3);
                out=new FileOutputStream(sof);//写出
                byte[] bytes=new byte[1024*1024];//一次复制1Mb
                int count=0;
                while ((count=(bytes))!=-1){
                    (bytes,0,count);
                }

                ();
            } catch (FileNotFoundException e) {
                ();
            } catch (IOException e) {
                ();
            } finally {
                if(in!=null){
                    try {
                        ();
                    } catch (IOException e) {
                        ();
                    }
                }
                if(out!=null){
                    try {
                        ();
                    } catch (IOException e) {
                        ();
                    }
                }
            }
            return;
        }
        //获取源文件的子目录
        File[] files=();
        for(File file:files){
            //如果file是一个目录的话
            if(()){
                //新建对应目录
                String srcDir=();//源目录绝对路径
                //目标目录当前的绝对路径+源目录的目录路径,(3)将源文件的盘符分割
                String desDir=(().endsWith("\\")? () : ()+"\\")+(3);
                File newFile=new File(desDir);//将目标目录路径新建
                //如果对对象不存在
                if(!()){
                    ();//新建目录
                }
            }
            /*递归当前获取到的文件*/
            copys(file,destFile);//递归
        }
    }
}

再main方法中输入目标相对应的绝对路径即可进行文件的拷贝