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() +
"\ncan read: " + f.canRead() +
"\ncan write: " + f.canWrite() +
"\nget name: " + f.getName() +
"\nget path: " + f.getPath() +
"\nget last modified: " + f.lastModified() +
"\nlength: " + f.length()
);
if (f.isFile()) {
System.out.println("f is file");
}
}
}