Java 指定文件路径把多个文件拷贝指定目录

1、Java 指定文件路径把多个文件拷贝指定目录

  • 实现思路,在指定的需要拷贝的文件目录,如(srcFilePath)原目录,找出你想要拷贝的文件类型到指定的目标文件目录(destFilePath)目标目录,即可。

2、递归文件方法

import java.io.*;
import java.util.Arrays;
import java.util.List;

public class FileUtil {

/**
     * 列出文件清单,以一个数组形式返回,
     *
     * @param filePath 磁盘文件路径
     * @param fileArr  此参数需要传一个new ArrayList<>()进入方法体,在非法体创建一个对象数组,子目录的文件存放不了进数组进行返回
     * @return
     */
    public static List listFiles(String filePath, List fileArr) {
        File[] files = new File(filePath).listFiles();
        for (int k = 0; k < files.length; k++) {
            if (files[k].isDirectory()) {
                listFiles(files[k].getPath(), fileArr);
            } else if (!files[k].isDirectory()) {
                fileArr.add(files[k].getAbsolutePath());
            }
        }
        return fileArr;
    }


    /**
     * 拷贝指定文件到指定的目录
     *
     * @param srcFileName 需要拷贝的文件名称
     * @param destDir     指定的目标目录
     * @param input
     * @throws Exception
     */
    public static void copyFileToFolder(String srcFileName, String destDir, InputStream input) {
       
        //组装成一个目录文件
        String dirFile = destDir + "/" + srcFileName;
        int index;
        byte[] bytes = new byte[1024];
        try {
            FileOutputStream outputStream = new FileOutputStream(dirFile);
            while ((index = input.read(bytes)) != -1) {
                outputStream.write(bytes, 0, index);
                outputStream.flush();
            }
            outputStream.close();
            input.close();
        } catch (Exception e) {
            System.err.println("copyFileToFolder,exception" + e.getMessage());
        }
    }

        /**
     * 创建目录
     *
     * @param destDir
     * @return boolean
     */
    public static boolean createDir(String destDir) {
        File dir = new File(destDir);
        if (dir.exists()) {
            System.out.println("创建目录" + destDir + "失败,目标目录已经存在");
            return false;
        }
        if (!destDir.endsWith(File.separator)) {
            destDir = destDir + File.separator;
        }
        //创建目录
        if (dir.mkdirs()) {
            System.out.println("创建目录" + destDir + "成功!");
            return true;
        } else {
            System.out.println("目录已经存在,创建目录" + destDir + "失败!");
            return false;
        }
    }
   
}

3、main方法测试类

package com.cc.domain;

import com.rub.utils.FileUtil;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class FileCopy {
    public static void main(String[] args) throws Exception {

        String src = "D:\\video\\unzip";
        String dst = "D:\\video\\wmv";
        //过滤wmv视频的文件
        List srcFilesPath = FileUtil.listFiles(src, new ArrayList<>()).stream().filter(o -> o.toLowerCase().endsWith("wmv")).collect(Collectors.toList());

         //创建一个目标目录
        FileUtil.createDir(dst);
        for (String filesPath : srcFilesPath) {
            File file = new File(filesPath);
            FileInputStream fis = new FileInputStream(file);
            FileUtil.copyFileToFolder(file.getName(), dst, fis);
        }

        System.out.print("成功");
    }
}

你可能感兴趣的:(Java 指定文件路径把多个文件拷贝指定目录)