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

复制代码
package cn.it.text;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;

/*
 * 1.从键盘接收两个文件夹路径,把其中一个文件夹(包含内容)
 *    拷贝到另一个文件夹中
 */
public class Test1 {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        String pathname1 = "";
        String pathname2 = "";
        while (true) {

            // 获取文件夹路径

            System.out.println("请输入文件夹路径1:");
            pathname1 = scan.nextLine();
            System.out.println("请输入文件夹路径2:");
            pathname2 = scan.nextLine();

            // 创建两个文件对象
            File file1 = new File(pathname1);
            File file2 = new File(pathname2);

            // 判断文件是否存在
            if (!(file1.exists() && file2.exists())) {
                System.out.println("你输入的文件夹路径错误!");
                // 跳出本层循环,重新输入
                continue;
            }
            // 判断是否是文件夹
            if (!(file1.isDirectory() && file2.isDirectory())) {
                System.out.println("你输入的不是文件夹路径!");
                continue;
            }

            // 创建输入输出流对象
            fuzhi(file1, file2);
            break;

        }

    }

    public static void fuzhi(File file1, File file2) throws Exception {
        //在目标文件中创建原文件夹
        //File类的构造方法File(File file,String name)
        File newFile=new File(file2,file1.getName());
        //创建文件夹,文件夹的路径在构造方法中给出,如果存在文件夹,就不再创建
        //如果不存在,就创建文件夹
        newFile.mkdir();
        
        //获取源文件夹中的文件目录
        File[] fileArr=file1.listFiles();
        
        //遍历数组
        for(File f:fileArr) {
            //如果是文件夹,就递归调用
            if (f.isDirectory()) {
                fuzhi(f, newFile);
            }else {
                //如果是文件,就使用IO流
                BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));
                BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(new File(newFile,f.getName())));
                int b;
                while((b=in.read())!=-1) {
                    out.write(b);
                }
                in.close();
                out.close();
            }
        }
            
    }

}
复制代码

 

posted @   颗就完了  阅读(924)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示