注册
登录
描述:
将原始目录下的子目录中指定格式的文件抽取到指定目录中
如下图 将每个子目录下的pdf文件抽离到指定目录下 并在指定目录下创建相同的目录


案例
package com.et.com.et.test;
import jdk.internal.util.xml.impl.Input;
import java.io.*;
import java.util.Arrays;
/**
* @Author: ETJAVA
* @CreateTime: 2024-06-30 16:09
* @Description: TODO 抽离所有目录中的PDF文件
* @Version: 1.0
*/
public class Test2 {
public static void main(String[] args) {
File f1 = new File("C:\\Users\\etjav\\Desktop\\绵阳城市学院12级计科2101-2108班级提交资料\\学生作业\\");
getFiles(f1);
}
private static void getFiles(File f1) {
if(f1.listFiles()!=null){
File[] files = f1.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File ff = new File(dir, name);
if (dir.isDirectory()) {
getFiles(ff);
}
return name.toLowerCase().endsWith(".pdf");
}
});
for (File file : files) {
createFile(file);
}
}
}
/*
* 创建文件
* file 原始文件
* */
private static void createFile(File file) {
try {
// 创建目标目录 截取原始目录中的指定的目录 例如 2101
String[] data = file.getAbsolutePath().split("\\\\");
InputStream is = new FileInputStream(file);
// 自动创建新目录
File f2 = new File("C:\\Users\\etjav\\Desktop\\打印\\"+data[6]+"\\");
if (!f2.exists()){
f2.mkdir();
}
// 写出文件到新目录 需要在新目录后面添加文件名称
File f3 = new File("C:\\Users\\etjav\\Desktop\\打印\\"+data[6]+"\\"+file.getName());
OutputStream os = new FileOutputStream(f3);
int len;
byte[] bytes = new byte[1024];
while((len=is.read(bytes))!=-1){
os.write(bytes,0,len);
}
os.close();
is.close();
}catch (Exception e){
e.printStackTrace();
}
}
}