欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

程序员文章站 2022-06-16 13:42:09
...
   /**
     * 1.从键盘接收两个文件夹路径,
     * 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
     */
    public static void fun1(File f1, File f2) {

        // 判断当前文件是否是文件夹,如果是文件夹,
        // 先在目标路径创建相同名字的文件夹,随后递归进入文件夹
        String newFilePaht = f2.getAbsolutePath() + "\\" + f1.getName();
        f2 = new File(newFilePaht);
        f2.mkdir();
        File[] files = f1.listFiles();
        for (File file :
                files) {
            if (file.isFile()) {
                newFilePaht = f2.getAbsolutePath() + "\\" + file.getName();
                f2 = new File(newFilePaht);
                FileCopyUtils.copy(file, f2);
            } else {
                fun1(file, f2);
            }
        }
    }

/**
 * 流工具类
 */
public class FileStreamUtils {

    /**
     * 拷贝
     * @param is
     * @param os
     */
    public static void copy(InputStream is, OutputStream os) {
        try {
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = is.read(buf)) != -1) {
                os.write(buf, 0, len);

            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 关流
     * @param is
     * @param os
     */
    public static void close(InputStream is, OutputStream os){
        try {
            if (is != null)
                is.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (os != null)
                    os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

/**
 * 文件copy类
 */
public class FileCopyUtils {

    public static void copy(File f1, File f2) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream(f1);
            fos = new FileOutputStream(f2);


            FileStreamUtils.copy(fis,fos);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            FileStreamUtils.close(fis,fos);
        }
    }
}