ETJava Beta | Java    注册   登录
  • File类抽取文件案例

    发表于 2024-06-30 21:23:21     阅读(95)     博客类别:J2SE

    File类抽取文件案例

     

    描述:

    将原始目录下的子目录中指定格式的文件抽取到指定目录中

    如下图 将每个子目录下的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();
            }
        }
    }