File、FileFilter、FilenameFilter

Author Avatar
罗炜光 4月 17, 2016
  • 在其它设备中阅读本文章

概述

FileFilter和FilenameFilter都是文件过滤器,都是一个接口,只有方法accept(),accept返回true表示符合所需文件标准,要过滤掉的文件则返回false

public interface FileFilter {
    boolean accept(File pathname);
}
public interface FilenameFilter {
    //dir表示文件的当前目录,name表示文件名;
    boolean accept(File dir, String name);
}

例子

public class Test
{
    public static void main(String[] args) throws URISyntaxException, IOException
    {

        //通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
        File file1 = new File("E:\\");
        //根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
        File file2 = new File(file1, "Test2.rar");
        //通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
        URI uri = new URI("file:///E:/Test.txt");
        File file3 = new File(uri);
        //根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
        File file4 = new File("E:\\", "Test.txt");
        File file5 = new File("E:\\", "Test3.txt");
        File file6 = new File("E:\\test");
        File file7 = new File("E:\\Test");

        //canExecute() boolean 测试应用程序是否可以执行此抽象路径名表示的文件
        System.out.println("canExecute():" + file2.canExecute());
        //canRead() boolean 测试应用程序是否可以读取此抽象路径名表示的文件
        System.out.println("canRead():" + file2.canRead());
        //canWrite() boolean 测试应用程序是否可以修改此抽象路径名表示的文件
        System.out.println("canWrite():" + file2.canWrite());
        //compareTo(File pathname) int 按字母顺序比较两个抽象路径名。
        System.out.println("compareTo(File pathname):" + file1.compareTo(file2));
        //createNewFile() boolean 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 ture 表示新建成功
        System.out.println("createNewFile():" + file5.createNewFile());
        //createTempFile(String prefix, String suffix) static File 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
        System.out.println("createTempFile(String prefix, String suffix):" + File.createTempFile("test", "txt"));
        //createTempFile(String prefix, String suffix, File directory) static File 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
        System.out.println("createTempFile(String prefix, String suffix, File directory):" + File.createTempFile("test", "txt", file1));
        //delete() boolean 删除此抽象路径名表示的文件或目录。
        System.out.println("delete():" + file5.delete());
        //deleteOnExit() void 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
        file5.deleteOnExit();
        System.out.println("deleteOnExit():" + file5);
        //equals(Object obj) boolean 测试此抽象路径名与给定对象是否相等。
        System.out.println("equals(Object obj):" + file3.equals(file4));
        //exists() boolean 测试此抽象路径名表示的文件或目录是否存在。
        System.out.println("exists():" + file2.exists());
        //getAbsoluteFile() File 返回此抽象路径名的绝对路径名形式。
        System.out.println("getAbsoluteFile():" + file2.getAbsoluteFile());
        //getAbsolutePath() String 返回此抽象路径名的绝对路径名字符串。
        System.out.println("getAbsolutePath():" + file2.getAbsolutePath());
        //getCanonicalFile() File 返回此抽象路径名的规范形式。
        System.out.println("getCanonicalFile():" + file2.getCanonicalPath());
        //getCanonicalPath()  String 返回此抽象路径名的规范路径名字符串。
        System.out.println("getCanonicalPath():" + file2.getCanonicalPath());
        //getFreeSpace() long 返回此抽象路径名指定的分区中未分配的字节数。
        System.out.println("getFreeSpace():" + file1.getFreeSpace());
        //getName()  String 返回由此抽象路径名表示的文件或目录的名称。
        System.out.println("getName():" + file2.getName());
        //getParent() String 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
        System.out.println("getParent():" + file2.getParent());
        //getParentFile() File  返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
        System.out.println("getParentFile():" + file2.getParentFile());
        //getPath()  String 将此抽象路径名转换为一个路径名字符串。
        System.out.println("getPath():" + file2.getPath());
        //getTotalSpace() long 返回此抽象路径名指定的分区大小。
        System.out.println("getTotalSpace():" + file1.getTotalSpace());
        //getUsableSpace() long 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
        System.out.println("getUsableSpace():" + file1.getUsableSpace());
        //hashCode() int 计算此抽象路径名的哈希码。
        System.out.println("hashCode():" + file1.hashCode());
        //isAbsolute() boolean 测试此抽象路径名是否为绝对路径名。
        System.out.println("isAbsolute():" + file2.isAbsolute());
        //isDirectory()  boolean 测试此抽象路径名表示的文件是否是一个目录。
        System.out.println("isDirectory():" + file1.isDirectory());
        //isFile() boolean 测试此抽象路径名表示的文件是否是一个标准文件。
        System.out.println("isFile():" + file2.isFile());
        //isHidden() boolean 测试此抽象路径名指定的文件是否是一个隐藏文件。  假如是文件夹会返回ture
        System.out.println("isHidden():" + file2.isHidden());
        //lastModified() long 返回此抽象路径名表示的文件最后一次被修改的时间。
        System.out.println("lastModified():" + file2.lastModified());
        //length() long 返回由此抽象路径名表示的文件的长度。
        System.out.println("length():" + file2.length());
        //list()  String[] 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
        String[] strs1 = file6.list();
        for(String str : strs1)
            System.out.println("list():" + str);
        //list(FilenameFilter filter)  String[] 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
        String[] strs2 = file6.list(new FilenameFilter()
        {

            @Override
            public boolean accept(File dir, String name)
            {
                if(name.endsWith(".txt"))
                    return true;
                return false;
            }
        });
        for(String str : strs2)
            System.out.println("list(FilenameFilter filter):" + str);
        //listFiles()  File[] 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
        File[] files1 = file6.listFiles();
        for(File file : files1)
            System.out.println("listFiles():" +file);
        //listFiles(FileFilter filter)  File[] 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
        File[] files2 = file6.listFiles(new FileFilter()
        {

            @Override
            public boolean accept(File pathname)
            {
                if(pathname.getName().endsWith(".txt"))
                    return true;
                return false;
            }
        });
        for(File file : files2)
            System.out.println("listFiles(FileFilter filter):" + file);
        //listFiles(FilenameFilter filter)  File[] 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
        File[] files3 = file6.listFiles(new FilenameFilter()
        {

            @Override
            public boolean accept(File dir, String name)
            {
                if(name.endsWith(".txt"))
                    return true;
                return false;
            }
        });
        for(File file : files3)
            System.out.println("listFiles(FilenameFilter filter):" + file);
        //listRoots() static File[] 列出可用的文件系统根。
        File[] files4 = File.listRoots();
        for(File file : files4)
            System.out.println("listRoots():" + file);
        //mkdir() boolean  创建此抽象路径名指定的目录。
        System.out.println("mkdir():" + file6.mkdir());
        //mkdirs() boolean 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
        System.out.println("mkdirs():" + file6.mkdirs());
        //renameTo(File dest) boolean 重新命名此抽象路径名表示的文件。
        System.out.println("renameTo(File dest):" + file5.renameTo(file3));
        //setExecutable(boolean executable) boolean 设置此抽象路径名所有者执行权限的一个便捷方法。
        System.out.println("setExecutable(boolean executable):" + file2.setExecutable(true));
        //setExecutable(boolean executable, boolean ownerOnly) boolean 设置此抽象路径名的所有者或所有用户的执行权限。
        System.out.println("setExecutable(boolean executable, boolean ownerOnly):" + file2.setExecutable(true, false));
        //setLastModified(long time) boolean 设置此抽象路径名指定的文件或目录的最后一次修改时间。
        System.out.println("setLastModified(long time):" + file1.setLastModified(new Date().getTime()));
        //setReadable(boolean readable) boolean 设置此抽象路径名所有者读权限的一个便捷方法。
        System.out.println("setReadable(boolean readable):" + file1.setReadable(true));
        //setReadable(boolean readable, boolean ownerOnly) boolean 设置此抽象路径名的所有者或所有用户的读权限。
        System.out.println("setReadable(boolean readable, boolean ownerOnly):" + file1.setReadable(true, false));
        //setReadOnly() boolean 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。
        System.out.println("setReadOnly():" + file2.setReadOnly());
        //setWritable(boolean writable) boolean 设置此抽象路径名所有者写权限的一个便捷方法。
        System.out.println("setWritable(boolean writable):" + file2.setWritable(true));
        //setWritable(boolean writable, boolean ownerOnly) boolean 设置此抽象路径名的所有者或所有用户的写权限。
        System.out.println("setWritable(boolean writable, boolean ownerOnly):" + file2.setWritable(true, true));
        //toString() String 返回此抽象路径名的路径名字符串。
        System.out.println("toString():" + file2.toString());
        //toURI() URI 构造一个表示此抽象路径名的 file: URI。
        System.out.println("toURI():" + file3.toURI());
    }                     
}
canExecute():true
canRead():true
canWrite():true
compareTo(File pathname):-9
createNewFile():false
createTempFile(String prefix, String suffix):C:\Users\ADMINI~1\AppData\Local\Temp\test6093908792030020865txt
createTempFile(String prefix, String suffix, File directory):E:\test8672086278670390974txt
delete():true
deleteOnExit():E:\Test3.txt
equals(Object obj):true
exists():true
getAbsoluteFile():E:\Test2.rar
getAbsolutePath():E:\Test2.rar
getCanonicalFile():E:\Test2.rar
getCanonicalPath():E:\Test2.rar
getFreeSpace():55538286592
getName():Test2.rar
getParent():E:\
getParentFile():E:\
getPath():E:\Test2.rar
getTotalSpace():200773988352
getUsableSpace():55538286592
hashCode():1267478
isAbsolute():true
isDirectory():true
isFile():true
isHidden():false
lastModified():1460885084640
length():84
list():test
list():test1.txt
list():test2.txt
list(FilenameFilter filter):test1.txt
list(FilenameFilter filter):test2.txt
listFiles():E:\test\test
listFiles():E:\test\test1.txt
listFiles():E:\test\test2.txt
listFiles(FileFilter filter):E:\test\test1.txt
listFiles(FileFilter filter):E:\test\test2.txt
listFiles(FilenameFilter filter):E:\test\test1.txt
listFiles(FilenameFilter filter):E:\test\test2.txt
listRoots():C:\
listRoots():D:\
listRoots():E:\
listRoots():F:\
listRoots():G:\
listRoots():I:\
mkdir():false
mkdirs():false
renameTo(File dest):false
setExecutable(boolean executable):true
setExecutable(boolean executable, boolean ownerOnly):true
setLastModified(long time):true
setReadable(boolean readable):true
setReadable(boolean readable, boolean ownerOnly):true
setReadOnly():true
setWritable(boolean writable):true
setWritable(boolean writable, boolean ownerOnly):true
toString():E:\Test2.rar
toURI():file:/E:/Test.txt