Java自制程序提取文件夹中指定格式的文件
情景还原
大家在工作中有没有遇到过这样的情况:你有一个文件夹里面有各种各样的文件夹,文件夹里还有很多子文件夹和文件。但是你今天只想要里面的某一种格式的所有文件。例如说:PPT,DOC。如果你喜欢花时间一个一个复制出来,哪你关了我的博客去复制吧,很显然会耽误你很长时间,甚至会想摔电脑。作为一个程序猿,我最不能容忍的就是重复简单操作,所以自己搞了个程序玩玩。
接下来展示代码
这是实现批量读取文件和复制问价的代码
public class getFile { List<File> Original_List=new ArrayList<>(); //save files in Original_path List<File> target_List=new ArrayList<>(); //save files will to target_path public void getFile(String Original_path,String target_path,String format1,String format2) { FileOutputStream fos=null; try { File dir = new File(Original_path); System.out.println("Read File....."); getAllFile(dir,Original_List); for (int i = 0; i < Original_List.size(); i++) { if (Original_List.get(i).getName().endsWith(format1)||Original_List.get(i).getName().endsWith(format2)) { target_List.add(Original_List.get(i)); } } for (File file : target_List) { try { fos = new FileOutputStream(target_path+file.getName()); Files.copy(Paths.get(file.toURI()),fos); } catch (IOException e) { System.err.println("copy Error"); e.printStackTrace(); }finally { fos.close(); System.out.println(file.getName()+" Succeed Copy!"); } } }catch(Exception k) { System.out.println("Original_path ERROR"); k.printStackTrace(); } } private static void getAllFile(File f,List<File> list) { File[] fList = f.listFiles(); for (File file : fList) { list.add(file); if (file.isDirectory()) { getAllFile(file,list); } } } }
为了以后还会使用到每次改变代码会很麻烦,我写了配置文件,程序自动读取
public class ReadConfig { public static String Original_path; public static String Target_path; public static String format1; public static String format2; static { Properties properties = new Properties(); File file = new File("./config.properties"); FileInputStream fis = null; try { fis = new FileInputStream(file); properties.load(fis); } catch (IOException e) { e.printStackTrace(); throw new Error("读取配置文件失败!"); } finally { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } Original_path = properties.getProperty("Original_path"); Target_path= properties.getProperty("Target_path"); format1= properties.getProperty("format1"); format2= properties.getProperty("format2"); } public static void showConfig() { System.out.println("============================================"); System.out.println("Original_path: " + Original_path); System.out.println("Target_path: " + Target_path); System.out.println("format1: " + format1); System.out.println("format2: " + Original_path); System.out.println("============================================"); } public static void main(String[] args) { showConfig(); } }
配置文件的写法
Original_path=G:\\javaweb Target_path=G:\\javaWeb_ppt\\ format1=.doc format2=.docx
配置文件说明
format1,format2是为了兼容不同格式,比如doc 和docx,如果不存在多格式,两个参数都写一样的格式,要不然会翻车。
Original_path=G:\\javaweb
(这个是你要提取的原始文件夹的位置,"\\"表示转译,在java里需要,不然会报错)
Target_path=G:\\javaWeb_ppt\\
(这个是你要把提取的文件放到你想指定的位置,记得最后写上 "\\" ,要不然放不进去)
Run方法
public class Run { static String Original_path=ReadConfig.Original_path; static String Target_path=ReadConfig.Target_path; static String format1=ReadConfig.format1; //Lowercase static String format2=ReadConfig.format2; //Uppercase public static void main(String[] args) { getFile g =new getFile(); g.getFile(Original_path, Target_path, format1,format2); } }