关于File类中常用方法和知识点
File中的List()方法和ListFile()方法的区别和使用
返回值类型 | 元素内容 |
---|---|
List()方法中的返回值是String[]数组类型 | string类型的【文件名】(包含后缀名) |
Listfile()方法的返回值类型是File[]对象数组 | File对象类型的【完整路径】 |
因此,遍历文件夹中所有文件,包括子文件夹中的文件时,最好用listFiles()方法,看起来更加明了,使用List方法的话不知道文件时哪个子文件夹下面的,因为只显示文件名。代码示例:
import java.io.File;
public class Demo {
public static void main(String[] args) {
File file=new File("D:\\BaiduNetdiskDownload");
String[] list = file.list();
System.out.println("=========list()遍历结果========");
for (String s : list) {
System.out.println(s);
}
System.out.println("=====listfiles()遍历结果=========");
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(file1);
}
}
}
两种运行结果如图:
File中过滤器FilenameFilter()和FileFilter的参数详解和使用
接口FileFilter
用于抽象路径名的过滤器,此接口的实例可传递给File类的listFiles(FileFilter)方法
方法:public boolean accept(File pathname) 可以对路径进行过滤
接口FilenameFilter
用于过滤文件名,Abstract Window Toolkit的文件对话框组件使用这些实例过滤File类的list方法中的目录清单。
方法:
public boolean accept(File dir, String name) 用于对文件名进行过滤
代码案例:
import java.io.File;
import java.io.FileFilter;
public class Demo {
public static void main(String[] args) {
//测试Filefilter接口
File file = new File("D:\\BaiduNetdiskDownload");
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.canWrite()){
return true;
} else {
return false;
}
}
});
for (File file1 : files) {//遍历
System.out.println(file1);
}
}
}
测试结果
import java.io.File;
import java.io.FilenameFilter;
public class Demo {
public static void main(String[] args) {
//测试FileNamefilter接口
File file = new File("D:\\BaiduNetdiskDownload");
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".rar")){//过滤出来后缀为.rar的文件
return true;
}else{
return false;
}
}
});
for (File file1 : files) {//遍历
System.out.println(file1);
}
}
}
测试结果:
File中递归查看和删除指定文件夹的所有文件
》递归查看指定文件夹下的所有文件(包括子文件夹下的文件)
public static void main(String[] args) {
File file =new File("D:\\step1");
getFiles(file);
public static void listDir(File dirl){
System.out.println(dir.toString());
File[] files = dir.listFiles();
if(files!=null&&files.length>0){
for (File file : files) {
if(file.isDirectory()){
listDir(filel);
}else{
System.out.println(file.toString());
}
}
}
}
}
》递归删除指定文件夹下的所有文件(包括子文件夹下的文件)
public static void main(String[] args) {
File file =new File("D:\\step1");
deleteFiles(file);
public static void deleteFile(File dir){
File[] files = dir.listFiles();
if(files!=null&&files.length>0){
//删除文件
for (File file : files) {
if(file.isDirectory()){
deleteFile(file);
}else{
System.out.println(file.toString()+":"+file.delete());
}
}
//把文件夹删除
System.out.println(dir.toString()+":"+dir.delete());
}
}
}
}