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<String> listFiles(String filePath, List<String> 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<String> 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("成功");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章