复制文件夹

1. 复制只有一个目录下的文件夹

    主要是需要用到File类和文件流的操作。复制文件实际上就是字节流的input和output

/**8
 * 复制单级目录下的文件
 *   1. 新建file对象
 *        指向源文件source_file
 *        指向目标文件target_file
 *          如果目标文件不存在则新建
 *   2. 获取文件列表
 *   3. 循坏遍历文件srcFile完成读写操作
 *        新建文件夹下的文件destFile
 *         (1)读字符流:先读
 *         (2)写字符流:再写
 */
private static void copyContent() throws IOException {
    File source_file=new File("D:\\study\\java");
    File target_file=new File("D:\\study\\java1");
    if(!target_file.exists()){
        target_file.mkdir();
    }
    File[] files=source_file.listFiles();
    System.out.println(files.length);
    for (File srcFile : files) {
        String srcFileName=srcFile.getName();
        File destFile=new File(target_file,srcFileName);
        copy(srcFile,destFile);
    }
}

/***
 * 文件复制工作
 * 主要是流的输入输出
 * @param srcFile
 * @param destFile
 * @throws IOException
 */

private static void copy(File srcFile, File destFile) throws IOException {
    BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(srcFile));
    BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(destFile));
    byte[] bys=new byte[1024];
    int len;
    while((len=bufferedInputStream.read(bys))!=-1){
        bufferedOutputStream.write(bys,0,len);
    }
    bufferedInputStream.close();
    bufferedOutputStream.close();
}

2. 复制多级目录文件夹

    相对于复制单级目录文件夹而言,多级目录下还有文件夹,故需要一个判断是否问文件的活成,如果是文件是进行复制,如果不是文件即为文件夹就递归遍历直至没有文件夹为止:

  public static void main(String[] args) throws IOException {
      //  copyContent();
        File source_file=new File("D:\\study\\java");
        String target_FilePath="D:\\study\\java1";
        copyMulContent(source_file,target_FilePath);
    }

    /***
     * 复制多级目录下的文件
     * 1. 新建file对象
     *      *        指向源文件source_file
     *      *        指向目标文件target_file
     *      *          如果目标文件不存在则新建
     * 2. 判断文件是否为目录:
     *    是: 获取文件列表并递归获取
     *    否: 复制文件
     * @param source_file
     * @param target_FilePath
     */
    private static void copyMulContent(File source_file, String target_FilePath) throws IOException {
        File target_file=new File(target_FilePath);
        if(!target_file.exists()){
            target_file.mkdir();
        }
        File[] files=source_file.listFiles();
        System.out.println(files.length);
        for (File file : files) {
            if(file.isDirectory()){
                target_FilePath+="//"+file.getName();
                copyMulContent(file, target_FilePath);
            }else{
                String srcFileName=file.getName();
                File destFile=new File(target_file,srcFileName);
                copy(file,destFile);
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值