File类
File类代表物理盘符中的一个文件或文件夹
其不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class Hello{
public static void main(String[] args) throws IOException { //创建文件时必须抛出异常
//File.pathSeparator生成路径分隔符;
System.out.println("路径分隔符" + File.pathSeparator);
//File.separator生成名称分隔符\
System.out.println("名称分隔符" + File.separator);
//先创建File类的对象,才能对文件进行操作
File f1 = new File("1.txt");
File f2 = new File("1");
File f3 = new File(".");
//exists()方法判断文件或目录是否存在
//createNewFile()方法创建文件,返回true
if (! f1.exists()) {
System.out.println(f1.createNewFile());
}
//mkdir()方法创建目录,返回true(mkdirs()方法可以创建多级目录)
System.out.println(f2.mkdir());
//isDirectory()方法判断是否是目录
System.out.println(f2.isDirectory());
//delete()方法删除文件或目录,返回true(只能删除空目录,多级目录只能删除最里层那个)
System.out.println(f2.delete());
//isFile()方法判断是否是文件
System.out.println(f1.isFile());
//getName()方法获取文件名
System.out.println(f1.getName());
//getPath()方法获取文件相对路径
System.out.println(f1.getPath());
//getAbsolutePath()方法获取文件绝对路径
System.out.println(f1.getAbsolutePath());
//length()方法获取文件大小
System.out.println(f1.length());
//canWrite()方法判断文件是否可写
System.out.println(f1.canWrite());
//list()方法返回当前路径下所有文件和文件夹的名称,保存为数组
System.out.println(Arrays.toString(f3.list()));
}
}
FileFilter接口
当调用File类中的listFiles()方法时,支持传入FileFilter接口实现类的对象作为参数,对获取的文件进行过滤
import java.io.File;
import java.io.FileFilter;
public class Hello{
public static void main(String[] args) {
File f2 = new File("1");
System.out.println(f2.mkdir());
//FileFilter实现类可以自定义选择文件的条件
File[] files = f2.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg")) {
return true;
}
return false;
}
});
for (File f : files){
System.out.println(f.getName());
}
}
}
练习:递归打印文件夹所有文件路径,和删除所有文件
import java.io.File;
public class Hello{
public static void main(String[] args) {
File file = new File("d:\\JAVA");
test(file);
}
//要递归打印和删除,因此要创建一个方法来调用
public static void test(File file){
File[] list = file.listFiles();
if (list != null){
for (File fi : list) {
if (fi.isDirectory()){
//采用递归判断子文件是否为目录
test(fi);
}
else {
System.out.println(fi.getName());
System.out.println(fi.delete());
}
}
}
//先把所有文件删除以后,才能删除目录
System.out.println(file.delete());
}
}