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