做了一个小工具,给了一个比较复杂的文件夹, 把文件夹下所有的excel文件拿出来生成一个新的文件夹。相当于做一个筛选,功能看似简单,但是很实用。
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MyTest {
public static void main(String[] args) {
ArrayList<File> excels = getFileByDirectory("C:\\Users\\a", "业务梳理表.xlsx");
String path = "C:\\Users\\Desktop\\abc";
boolean boo = createTargetFile(excels, path);
System.out.println("结果为" + boo);
}
// 拿到某个文件夹下的所有文件而不是文件夹---递归
public static ArrayList<File> getallfile(File file, ArrayList<File> allfilelist) {
if (file.exists()) {
// 判断文件是否是文件夹,如果是,开始递归
if (file.isDirectory()) {
File f[] = file.listFiles();
for (File file2 : f) {
getallfile(file2, allfilelist);
}
} else {
allfilelist.add(file);
}
}
return allfilelist;
}
// 筛选拿到文件夹下的指定结尾的所有文件 filepath为文件夹路径 endFileName为筛选文件名
public static ArrayList<File> getFileByDirectory(String filepath, String endFileName) {
File file = new File(filepath);
ArrayList<File> files = new ArrayList<File>();
ArrayList<File> allFiles = getallfile(file, files);// 拿到所有文件
ArrayList<File> excels = new ArrayList<File>();
for (int i = 0; i < allFiles.size(); i++) {
if (allFiles.get(i).getName().endsWith(endFileName)) {// 筛选特定的文件
excels.add(allFiles.get(i));
}
}
return excels;
}
// 生成新的文件夹 path为新文件夹的路径
public static boolean createTargetFile(ArrayList<File> excels, String path) {
File newFile = new File(path);
if (!newFile.exists()) {
newFile.mkdirs();
}
for (int i = 0; i < excels.size(); i++) {
try {
File file = new File(newFile.getPath() + "//" + excels.get(i).getName());
// System.out.println(file.getPath());
if (!file.exists()) {
file.createNewFile();
FileInputStream fin = new FileInputStream(excels.get(i));
FileOutputStream fout = new FileOutputStream(file);
int len = 0;
int count = 1;
byte[] b = new byte[1024 * 1024];
while ((len = fin.read(b)) != -1) {
fout.write(b, 0, len);
}
fin.close();// 关闭流
fout.close();// 关闭流
}
} catch (FileNotFoundException e) {
System.out.println("失败");
e.printStackTrace();
return false;
} catch (IOException e) {
System.out.println("失败");
e.printStackTrace();
return false;
}
}
return true;
}
}
例子是筛选的特定的文件结尾的文件