19.1. 文件筛选过滤

HelloWorld.java

package com.a51work.com;

import java.io.File;
import java.io.FilenameFilter;

public class HelloWorld {
    public static void main(String[] args) {
        File dir = new File("D:\\GitHub");
//        创建txt文件过滤器
        Filter filter = new Filter("txt");
        System.out.println("txt文件搜索目录为:"+ dir);

        String files[] = dir.list(filter);      //dir.list();
//        遍历文件列表
        for (String fileName:files) {
            // 为搜索目录下的文件或目录创建File对象
            File f = new File(dir, fileName);
            // 如果该f对象是文件,则打印文件名
            if (f.isFile()){
                System.out.println("文件名:"+ f.getName());
                System.out.println("文件绝对路径:" + f.getAbsolutePath());
                System.out.println("文件路径: " + f.getPath());

            }else{
                System.out.println("子目录:" + f);
            }
//            测试文件是否存在
            if (f.exists()){
                System.out.println(f.getName() + "文件存在!");
            }else {
                System.out.println(f.getName() + "文件不存在");
            }
//            测试文件是否可以读取
            if (f.canRead()){
                System.out.println(f.getName() + "文件可以读取..");
            }else {
                System.out.println(f.getName() + "文件无法读取..");
            }
//            测试文件是否可以写入
            if (f.canWrite()){
                System.out.println(f.getName() + "文件可以写入..");
            }else {
                System.out.println(f.getName() + "文件无法写入..");
            }


        }

    }

}

/**
 * 自定义基于文件扩展名的文件过滤器
 * Filter继承FilenameFilter接口
 * boolean accept(File dir, String name):测试指定dir目录中是否包含文件名为name的文件
 */

class Filter implements FilenameFilter {
    //    文件扩展名
    String extent;


    //    构造函数,一个参数,参数名为扩展名
    public Filter(String extent) {
        this.extent = extent;
    }

    /**
     * @param dir  指定dir目录
     * @param name 包含文件名为name的文件
     * @return True or False
     */
    @Override
    public boolean accept(File dir, String name) {
//        测试文件扩展名是否为extenet所指定的
        return name.endsWith("." + extent);
    }
}

/*
txt文件搜索目录为:D:\GitHub
文件名:hujianli.txt
文件绝对路径:D:\GitHub\hujianli.txt
文件路径: D:\GitHub\hujianli.txt
hujianli.txt文件存在!
hujianli.txt文件可以读取..
hujianli.txt文件可以写入..
文件名:hujianli1.txt
文件绝对路径:D:\GitHub\hujianli1.txt
文件路径: D:\GitHub\hujianli1.txt
hujianli1.txt文件存在!
hujianli1.txt文件可以读取..
hujianli1.txt文件可以写入..
* */
package IO_test01;

import java.io.File;
import java.io.IOException;

public class main {
        public static void main(String[] args) throws IOException {
            File f = new File("..");
            System.out.println(f.getPath());
            //返回绝对路径
            System.out.println(f.getAbsolutePath());
            //返回的是规范路径
            System.out.println(f.getCanonicalPath());

            File f1 = new File("C:\\Windows");
            File f2 = new File("C:\\Windows\\notepad.exe");
            File f3 = new File("C:\\Windows\\nothing");
            System.out.println(f1.isFile());
            System.out.println(f1.isDirectory());
            System.out.println(f2.isFile());
            System.out.println(f2.isDirectory());
            System.out.println(f3.isFile());
            System.out.println(f3.isDirectory());

            if (f1.isDirectory()) {
                if (f1.canRead()) {
                    System.out.println("f2 is dir and can read...");
                }else {
                    System.out.println("f2 is dir can't read ....");
                }
                if (f1.canWrite()) {
                    System.out.println("f2 is dir and can write...");
                }else {
                    System.out.println("f2 is dir can't write ....");
                }
                if (f1.canExecute()) {
                    System.out.println("f2 is dir and can exe...");
                }else {
                    System.out.println("f2 is dir can't exe ....");
                }

            }
        }
    }