一、概念
将文件或者目录封装到一个类,这个类就是File类,然后可以对这个类对象进行各种操作,增删改查等等,也就是直接与计算机相关联的操作。
二、File类的构造方法
1、File(String pathname)
根据一个目录或文件得到一个File对象
File file = new File("路径"); 如:new File("D://file.txt")
2、File(String parent, String child)
根据一个目录和一个子文件/目录得到File对象
File file = new File("父路径","子路径"); 如:new File("D://","file.txt")
3、File(File file, String child)
根据一个父File对象和一个子文件/目录得到File对象
File file = new File("D://");
File file = new File(file, "file.txt");
三、File类的重要方法
封装后,得到的file对象存在的操作方法,操作成功返回true,失败返回false
1、创建文件与文件夹操作
public boolean createNewFile() 创建文件操作,如果存在这样的文件就不创建了
public boolean mkdir() 创建文件夹,如果存在这样的文件夹就不创建了
public boolean mkdirs() 创建文件夹,如果父路径不存在,也会帮你创建出来
2、重命名和删除功能
public boolean renameTo(File dest) 把文件重命名为指定文件路径,如果路径相同就是改名,不同就是改名并剪切到dest路径
public boolean delete() 删除文件或文件夹,但是注意删除不走回车站,而且只能删除空文件夹(掌握)
3、判断功能
public boolean isDirectory() 判断是否是目录
public boolean isFile() 判断是否是文件
public boolean isExists() 判断是否存在(目录、文件)
public boolean canRead() 判断是否可读(Windows系统下都是可读的,只能在其它系统使用)
public boolean canWrite() 判断是否可写
public boolean isHidden() 判断是否隐藏
4、获取功能(重要)
public String getAbsolutePath() 获取绝对路径(全路径,包括根路径,文件所在路径)
public String getPath() 获取路径(当前路径File指定的那个路径)
public String getName() 获取文件名称
public long length() 获取长度,字节数
public long lastModified() 获取文件最后一次的修改时间,毫秒值
public String[] list() 获取指定目录下的所有文件或者文件夹的名称数组(仅获取文件名称,不包括路径)
public File[] listFiles() 获取指定目录下的所有文件或者文件夹的File数组(获取整个路径,如:D://..txt)
四、过滤器的使用
过滤器在list()、listFiles()都可以使用,直接在这两个方法里面创建一个匿名内部类(new ),重写里面的方法即可
package com.xue.file;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
/**
* demo1方法:判断D盘目录下是否有.txt文件,有则输出其名称
* demo2方法:过滤掉除.txt文件外的其它文件(自定义过滤器)
* @author xue
*
*/
public class Test1 {
public static void main(String[] args) throws IOException {
File file = new File("D:\\"); //将D盘封装成一个文件
demo1(file); //判断D盘目录下是否有.txt文件,有则输出其名称
demo2(file); //过滤掉除.txt文件外的其它文件
}
/**
* 判断D盘目录下是否有.txt文件,有则输出其名称
* @param file
*/
private static void demo1(File file) {
String[] list = file.list(); //获取D盘里面的所有目录及文件名
for (String string : list) {
if (string.endsWith(".txt")) { //后缀是.txt的文件则输出名称
System.out.println(string);
}
}
}
/**
* 过滤掉除.txt文件外的其它文件(自定义过滤器)
* @param file
*/
private static void demo2(File file) {
File[] listFiles = file.listFiles(new FilenameFilter() { //匿名内部类重写accept方法
@Override
public boolean accept(File dir, String name) {
File file = new File(dir, name); //将dir文件封装成对象
return file.isFile() && file.getName().endsWith(".txt");//符合是文件并且以.txt结尾的返回给File数组
}
});
for (File file2 : listFiles) {
System.out.println(file2.getName()); //输出自定义过滤器过滤后的结果
}
}
}