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

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();
            }
        }

    }

}

原文地址:https://www.cnblogs.com/zhilili/p/10699897.html

时间: 2024-10-12 22:43:54

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

Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Simple

.net持续集成cake篇之常见文件及路径操作

系列目录 Cake常见文件和路径操作 在自动化构建任务里,很多操作都是跟文件打交道,比如文件打包,文件压缩,文件归档,文件传输,目录清理等.本节介绍一些cake里常见的文件操作方法 Cake相对路径问题 做过自动化的同学可能都知道,使用相对路径时,脚本在测试时的相对路径往往和正式环境中不一样,宿主环境的路径往往最终导致明明测试好的脚本最终却出现各种路径问题.但是如果把路径写成绝对路径往往又造成脚本通用性不强,每迁移到一个新项目就需要重新修改脚本文件,对脚本的修改往往意味着导致脚本出错的风险.而C

Linux下的头文件搜索路径

     对于以压缩包发布的软件,在它的目录下通常都有一个配置脚本configure,它的作用确定编译参数(比如头文件位置.连接库位置等),然后生成Makefile以编译程序.可以进入该软件的目录,执行"./configure --help"命令查看使用帮. 一个程序能正确编译.链接.运行需要满足3个条件:预处理时能找到头文件,连接时能找到库(静态库或动态库),运行时能找到库.下面介绍头文件的搜索路径 GCC 搜索头文件有三种策略: 1.内定搜索目录,这是编译器自身预设的目录.由于是内

ie下获取上传文件全路径

ie下获取上传文件全路径,3.5之后的火狐是没法获取上传文件全路径的 1 /*获取上传文件路径*/ 2 function getFilePath(obj) { 3 var form = $(this).parents("form"); 4 form.validate(); 5 var fileObj = obj; 6 if (fileObj) { 7 if (window.navigator.userAgent.indexOf("MSIE") >= 1) {

键盘接收用户输入

键盘接收用户输入   第一步:  导入包,必须位于Java 源文件中的第一行 import java.util.Scanner; 第二步:创建Scanner对象 Scanner input = new Scanner(System.in); 第三步:友好提示 System.out.print("请输入一个数: "); 第四步:键盘输入 int num = input.nextInt(); //注意:等待用户接收键盘输入值,当按下回车键,则表示输入完毕,并将回车之前所输入的内容赋给左侧的

键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Scanner;import java.util.Set; /** 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt&qu

C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;//该值确定是否可以选择多个文件 dialog.Title = "请选择文件夹"; dialog.Filter = "所有文件(*.*)|*.*"; if (dialog.ShowDial

java按指定后缀复制文件并保留原始文件夹路径

为了只复制java原代码文件,不要class文件或其他不需要的文件,写的一个java窗口小程序 指定文件后缀,原始文件文件夹路径,目的文件夹路径,如原始路径为,D:\Projects,目的路径为C:\User\ABC\Desktop\newProject\, 要复制.java文件,复制后的路径为C:\User\ABC\Desktop\newProject\Projects\...不改变原路径,只复制.java文件 1 package copyfile; 2 /** 3 * @author ycl

如何找到根控制起找到根控制器及获得文件夹路径

// 全局队列 异步下载图片 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSLog(@"%@", [NSThread currentThread]); // 耗时操作: 放在全局队列,异步执行 // 1. url, 确定一个网络上的资源路径 NSURL *url = [NSURL URLWith