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);
    }
}

 

程序下载地址

我的github: https://github.com/duqingqing/Java-extracts-the-file-

posted @ 2018-04-08 19:47  匿名道友  阅读(1158)  评论(1编辑  收藏  举报