zoukankan      html  css  js  c++  java
  • Java文件工具类

    Java文件工具类

    JavaUtils

    可以直接copy使用

    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FilenameFilter;
    import java.util.ArrayList;
    
    /*
     * 文件工具类
     */
    public  class FileUtils {
        /*
         * 指定关键字检索文件
         * @param file  File对象
         * @param key  关键字
         * @return 包含关键字的文件路径
         */
        public static ArrayList<String>  listFiles(File file,final String key) {
            //创建过滤器对象
            FilenameFilter filter=new FilenameFilter() {
                //如果文件名包含关键字返回true,否则返回false
                @Override
                public boolean accept(File dir, String name) {
                    // TODO Auto-generated method stub
                    File currFile=new File(dir,name);
                    if (currFile.isFile()&&name.contains(key)) {
                        return true;
                    }
                    return false;
                }
            };
            //递归方式获取规定的路径
            ArrayList<String>arrayList=fileDir(file,filter);
            return arrayList;
        }
    
        /*
         * 递归方式获取规定的路径
         * @param dir  file对象
         * @param filter  过滤器
         * @return 过滤器过滤后的文件路径
         */
        private static ArrayList<String> fileDir(File dir, FilenameFilter filter) {
            // TODO Auto-generated method stub
            ArrayList<String>arrayList=new ArrayList<>();
            //获取过滤后的所有文件
            File[] lists=dir.listFiles(filter);
            for(File list:lists){
                //将文件的绝对路径放到集合中
                arrayList.add(list.getAbsolutePath());
            }
            //获取当前目录下所有的文件数组
            File[]files=dir.listFiles();
            //遍历所有的子目录和文件
            for(File file:files){
                if (file.isDirectory()) {
                    //如果是目录,递归调用fileDir
                    ArrayList<String>every=fileDir(file, filter);
                    //将文件夹下的文件路径添加到集合
                    arrayList.addAll(every);
                }
            }
            //此时的集合中当前目录下的文件路径,和当前目录的子目录下的文件路径
            return arrayList;
        }
    
        /*
         * 指定后缀名检索文件
         * @param file  File对象
         * @param suffixArray 后缀名数组
         * @return 指定后缀的文件路径
         */
        public static ArrayList<String>listFiles(File file,final String[] suffixArray){
            //创建过滤器对象
            FilenameFilter filter=new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    // TODO Auto-generated method stub
                    File currFile=new File(dir,name);
                    //如果文件名以指定后缀名结尾返回true,否则返回false
                    if (currFile.isFile()) {
                        for(String suffix:suffixArray){
                            if (name.endsWith("."+suffix)) {
                                return true;
                            }
                        }
    
                    }
                    return false;
                }
            };
            //递归方式获取规定的路径
            ArrayList<String>arrayList=fileDir(file, filter);
            return arrayList;
        }
    
    
        /*
         * 复制文件/目录
         * @param srcFile 源目录
         * @param destFile 目标文件
         */
        public static void copySrcPathToDestPath(File srcDir,File destDir)
                throws Exception{
            File[]files=srcDir.listFiles();//子文件目录
            for(int i=0;i<files.length;i++){
                //创建指定目录的文件
                File copiedFile=new File(destDir,files[i].getName());
                //如果是目录
                if (files[i].isDirectory()) {
                    //创建文件夹
                    if (!copiedFile.mkdirs()) {
                        System.out.println("无法创建:"+copiedFile);
                        return;
                    }
                    //调用递归,获取子文件夹下的文件路径
                    copySrcPathToDestPath(files[i],copiedFile);
                }else {
                    //复制文件
                    FileInputStream input=new FileInputStream(files[i]);//获取输入流
                    FileOutputStream out=new FileOutputStream(copiedFile);//获取输出流
                    byte[]buffer=new byte[1024];//创建缓冲区
                    int n=0;
                    //循环读取字节
                    while ((n=input.read(buffer))!=-1) {
                        out.write(buffer,0,n);
                    }
                    //关闭输入流
                    input.close();
                    //关闭输出流
                    out.close();
                }
            }
        }
    }
    
    
    这是小睿的博客,如果需要转载,请标注出处啦~ヾ(≧▽≦*)o谢谢。
  • 相关阅读:
    Linux下的邮件发送
    Linux下用户和raid练习题
    Linux centos7.5操作系统的安装
    Linux chattr文件锁
    Linux系统下root密码丢失解决方案
    周总结2
    课堂作业1
    开课博客
    阅读3
    作业8
  • 原文地址:https://www.cnblogs.com/Yunrui-blogs/p/12833010.html
Copyright © 2011-2022 走看看