JAVA File类初探(一)(Java编程思想)

File类不仅可以表示一个文件,也可以表示一个目录下的所有文件,如果指的是一个文件集,我们就可以调用list()方法来获得文件名数组,有两种方法可以获得这个字符数组。

1.第一种为无参数的list()方法调用

public class TestFile {
    public static void main(String[] args) {
        File path = new File(".");
        String[] list = null;
        list = path.list();
        for (String str : list) {
            System.out.println(str);
        }
    }
}

可以得到该目录下的所有文件名称。

2.第二种是使用FilenameFilter接口来实现对文件名的筛选 FilenameFilter接口其实很简单,它里面只有一个accept()方法,这个accept()方法的作用是返回一个布尔值,如果通过了筛选条件返回true,反之则返回false。源码如下所示:

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

只需要实现FilenameFilter接口,然后使用list(FilenameFilter filter)方法就可以对文件名集合进行筛选。这种使用FilenameFilter接口的方法是使用了策略模式,提高了代码的灵活性。 listFile()可以返回一个File数组,和之前的list()不同,之前的list()返回的是一个字符串数组,这个则是File数组,有着更多的文件描述信息。

public File[] listFiles() {
    String[] ss = list();
    if (ss == null) return null;
    int n = ss.length;
    File[] fs = new File[n];
    for (int i = 0; i < n; i++) {
        fs[i] = new File(ss[i], this);
    }
    return fs;
}

File类也可以用来创建当前不存在的路径和目录

public class TestFile {
    public static void main(String[] args) {
        File f = new File("d://zxoa3");
        if (!f.exists()) {
            f.mkdirs();
        } else {
            f.delete();
        }
    }

}

File类可以查看文件的一些文件信息比如大小,是否为目录等等

public class TestFile {
    public static void main(String[] args) {
        File f = new File("d://zxoa.log");
        System.out.println(
                "get absolutePath: " + f.getAbsolutePath() +
                "
can read: " + f.canRead() +
                "
can write: " + f.canWrite() +
                "
get name: " + f.getName() +
                "
get path: " + f.getPath() + 
                "
get last modified: " + f.lastModified() +
                "
length: " + f.length()
        );
        if (f.isFile()) {
            System.out.println("f is file");
        }
    }

}
经验分享 程序员 微信小程序 职场和发展