其他分享
首页 > 其他分享> > 拷贝文件夹的方法

拷贝文件夹的方法

作者:互联网

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestCopyFile {

    private static int a = 5;

    public static void main(String[] args) {
        //需要复制的目标文件或目标文件夹
        String pathname = "C:\\Users\\w_wangsh\\Desktop\\升级脚本\\20210625\\";
        File fromFile = new File(pathname);
        //复制到的位置
        String topathname = "C:\\Users\\w_wangsh\\Desktop\\a";
        File toFile = new File(topathname);
        try {
            copy(fromFile,toFile);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void copy(File fromFile, File toFile) throws Exception {
        byte[] b = new byte[1024];
        int a;
        FileInputStream fis;
        FileOutputStream fos;
        if (fromFile.isDirectory()) {
            String filepath = fromFile.getAbsolutePath();
            filepath=filepath.replaceAll("\\\\","/");
            String toFilepath = toFile.getAbsolutePath();
            toFilepath=toFilepath.replaceAll("\\\\","/");
            int lastIndexOf = filepath.lastIndexOf("/");
            toFilepath = toFilepath + filepath.substring(lastIndexOf,filepath.length());
            File copy=new File(toFilepath);
            //复制文件夹
            if (!copy.exists()) {
                copy.mkdir();
            }
            //遍历文件夹
            for (File f : fromFile.listFiles()) {
                copy(f,copy);
            }
        } else {
            if (toFile.isDirectory()) {
                String filepath = fromFile.getAbsolutePath();
                filepath=filepath.replaceAll("\\\\","/");
                String toFilepath = toFile.getAbsolutePath();
                toFilepath=toFilepath.replaceAll("\\\\","/");
                int lastIndexOf = filepath.lastIndexOf("/");
                toFilepath = toFilepath + filepath.substring(lastIndexOf,filepath.length());

                //写文件
                File newFile = new File(toFilepath);
                fis = new FileInputStream(fromFile);
                fos = new FileOutputStream(newFile);
                while ((a = fis.read(b)) != -1) {
                    fos.write(b);
                }
            } else {
                //写文件
                fis = new FileInputStream(fromFile);
                fos = new FileOutputStream(toFile);
                while ((a = fis.read(b)) != -1) {
                    fos.write(b);
                }
            }

        }
    }

}

 

标签:String,filepath,toFilepath,文件夹,File,new,拷贝,方法,fromFile
来源: https://www.cnblogs.com/361ky/p/15176450.html