java基础--IO流----复制文件夹

其实有写好的jar包可以使用,现在项目下面新建一个文件夹lib,然后把jar包复制进去,右击—Build Path—add to buildPath即可,jar包原理如下
思路:定义一个方法,用来获取用户录入的文件夹路径 getDir()
定义一个方法,用来复制文件夹 copyDirToDir()

package io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Scanner;

public class CopyDir {

    public static void main(String[] args) throws Exception {
        /*
         * 思路:定义一个方法,用来获取用户录入的文件夹路径  getDir()
         *定义一个方法,用来复制文件夹  copyDirToDir()
         */
        File star = getDir();
        File end = getDir();
        copyDirToDir(star,end);
        System.out.println("ok");
    }
    //定义一个方法,用来获取用户录入的文件夹路径  getDir()
    public static File getDir(){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径:");
        while(true){
            String line = scan.next();
            File dir = new File(line);
            if(!dir.isDirectory()){
                System.out.println("输入有误,请重新输入");
            }else{
                return dir;
            }
        }
    }
    //定义一个方法,用来复制文件夹  copyDirToDir()
    public static void  copyDirToDir(File src,File dest) throws Exception{
        /*  
         * 主要是把listFile拷贝到newDir中
         * 
         * 思路:
         * 1、在目的地文件夹下创建一个和数据源文件夹名字一模一样的文件夹
         *      注意:如果文件夹不存在就创建,存在就不创建   
         * 2、File#listFiels()方法,获取到数据源下文件下所有的File对象
         * 3、遍历File数组,获取到每一个File对象,然后判断
         *      是文件就拷贝
         *      是文件夹就递归
         */
        //先封装这个路径
        File newDir = new File(dest,src.getName());
        //但是不存在的话,就要创建
        if(!newDir.exists()){
            newDir.mkdir();
        }
        //File#listFiels()方法,获取到数据源下文件下所有的File对象
        File[] listFiles = src.listFiles();
        //listFile为数据源下文件下的某个File对象
        for(File listFile:listFiles){
            if(listFile.isFile()){
                FileInputStream fis = new FileInputStream(listFile);
                //保持目的地文件名和源文件名的名字相同
                File newFile = new File(newDir,listFile.getName());
                FileOutputStream fos = new FileOutputStream(newFile);
                int ch = 0;
                while((ch = fis.read())!=-1){
                    fos.write(ch);
                }
                fis.close();
                fos.close();
            }else{
                copyDirToDir(listFile,newDir);
            }

        }
    }

}

使用jar包

package io;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

import org.apache.commons.io.FileUtils;

public class IOJar {

    public static void main(String[] args) throws Exception {
        File star = getDir();
        File end = getDir();
        FileUtils.copyDirectoryToDirectory(star, end);
        System.out.println("OK");

    }
    public static File getDir(){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径:");
        while(true){
            String line = scan.next();
            File dir = new File(line);
            if(!dir.isDirectory()){
                System.out.println("输入有误,请重新输入");
            }else{
                return dir;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值