• java文件操作和文件过滤器


    文件操作 

      java提供了File类来供我们操作文件,FIle是文件或文件夹的抽象表示,也就是对象表示。总结了几个常用的方法

    • File(File parenrt,String child)、FIle(String pathname)、File(String parent,String child),三个构造函数可以多种方式实现实例化。
    • getAbsolutePath():返回此文件或者文件夹的绝对路径
    • getName():返回此文件夹或者文件的名称
    • getPath():返回此文件夹或者文件的表示,也就是构造参数中的参数
    • createNewFIle():创建一个新的文件
    • mkdir():创建新目录,注意只能创建一层,
    • mkdirs():创建多层目录
    • isDirectory():判断是否是一个目录
    • isFile():判断是否是文件
    • list():返回文件或目录的名字的字符串数组
    • listFiles():返回文件或目录的文件对象数组

    文件过滤器:

      listFiles()函数返回文件的对象列表,而有时候我们只需要其中特定的文件,比如说.txt文件,而其余的不用返回,虽然可以在返回后再操作该数组,但这样有点太复杂了,java给我们提供了俩个接口FilenameFilter和FileFilter,将此接口对象传入到listFiles的参数中,以达到过滤的目的。接口中的accept就是过滤函数,分别对获得的每一个文件调用此方法,若返回true,则放入到数组中,反之移除

    FilenameFilter:

      FilenameFilter过滤器,我们只能使用文件或者目录的名字,dir参数是文件所在的目前对象,并不是文件的FIle对象,所有我们一般只是使用name参数

    public interface FilenameFilter {
        boolean accept(File dir, String name);
    }

    FileFilter:

      FileFilter过滤器,参数pathname即是文件的FIle对象,通过它我们可以获得文件的一切属性,比如说pathname.getName()就是文件的名字啦,可以变成间接的FIlenameFilter。功能强大

    public interface FileFilter {
        boolean accept(File pathname);
    }

    实例:

    import java.io.File;
    import java.io.FileFilter;
    import java.io.FilenameFilter;
    
    /**
     * 自定义的局部内部类来自定义过滤器类,
     */
    public class Generics {
        //自定义过滤器类实现FilenameFilter接口
        static class MyFilenameFilter implements FilenameFilter{
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".java");//只获取.java结尾的文件或目录
            }
        }
        //自定义过滤器类实现FileFilter接口
        static class MyFileFilter implements FileFilter{
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".java");//只获取.java结尾的文件或目录
            }
        }
        public static void main(String[] args) {
            File file =new File("D:");
            //方式一:FileFilter过滤器
            File[] files=file.listFiles(new MyFileFilter());
            for (File f:files){
                System.out.println(f.getName());
            }
            //方式二:FilenameFilter过滤器
            File[] files2=file.listFiles(new MyFilenameFilter());
            for (File f:files2){
                System.out.println(f.getName());
            }
            //list()函数只能接受FilenameFilter对象,匿名内部类的形式实现,
            //或者可以理解为为什么既然有FileFilter,而还要FilenameFilter
                //  1.对于listFiles来说,FilenameFilter可以直接操作name,而不需要通过File对象获取
                //  2.对于list来说,它只能是FilenameFilter过滤器,因为得到的是String,已经不是File了
            String[] filenames = file.list(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".java");
                }
            });
            for(String str:filenames){
                System.out.println(str);
            }
        }
    }
  • 相关阅读:
    SQL基本之增删查改操作
    【转】C++静态库与动态库
    使用日志记录功能查看PHP扩展的执行过程
    写一个打印日志的函数
    写一个CGI程序并运行
    gcc及其选项详解 【转载】
    Linux下gcc编译生成动态链接库*.so文件并调用它【转载】
    Laravel框架开发规范-修订版
    Laravel框架开发规范-修订前期版
    基本语句优化10个原则
  • 原文地址:https://www.cnblogs.com/gollong/p/9675341.html
Copyright © 2020-2023  润新知