文件File类
1、File类构造方法
A.三种构造
public File(String pathname)
public File(String parent, String child)
public File(File parent, String child)
2、File类常用方法
A.增(创建)
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
B.删(删除)
public boolean delete()
C.改(修改)
public boolean renameTo(File dest)
D.查(获取和判断)
public String getAbsolutePath()
public String getPath()
public String getName()
public long length()
public String[] list()
public File[] listFiles()
public boolean exists()
public boolean isDirectory()
public boolean isFile()
3、注意事项
A. 路径问题
a.相对路径:不带盘符,在idea的相对路径是 相对于项目路径,对于module下面的文件夹,需要加上module名称
b.绝对路径: 带有盘符,需要给出完整的路径
B. 创建文件或文件夹
根据方法的名称来确定是文件还是文件夹,不是根据路径来确定
文件过滤器
1、递归遍历文件夹的代码
A. 三参数问题 (高内聚"独立"与低耦合"依赖"思想)
public static void diGuiFile(File mFile,List<File> dirList,List<File> fileList)
B. 拓展案例:
a.递归获取所有的文件和文件夹信息,打印目录
b.递归删除文件夹思想,见到文件就删除
c.递归获取子文件思想,筛选集合数据
d.递归获取所有文件夹的大小
e.递归获取每种文件的数目
2、文件过滤器 FileFilter 的使用方式<筛选所有的java文件数据>
A. 匿名内部类用法
File[] fileArr = mFile.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java")||pathname.isDirectory();
}
});
B. Lambda表达式用法
File[] fileArr =mFile.listFiles((f)->f.getName().endsWith("java")||f.isDirectory());
综合案例
找出某一文件夹中所有的某种格式文件
package code.test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class test1217 {
public static void main(String[] args) {
String path = "f:\\音乐";
String format = ".mp3";
List<File> f1 = new ArrayList<>();
List<File> f2 = new ArrayList<>();
File f = new File(path);
getAllFile(f, f1, f2);
int count = 0;
for (int i = 0; i < f1.size(); i++) {
if (f1.get(i).getName().toLowerCase().endsWith(format)) {
System.out.println(f1.get(i));
count++;
}
}
System.out.println("文件夹有" + (f2.size() - 1) + "个");
System.out.println("文件有" + (f1.size()) + "个");
System.out.println(format + "文件有" + count + "个");
}
private static void getAllFile(File f, List<File> f1, List<File> f2) {
if (f.isFile()) {
f1.add(f);
} else if (f.isDirectory()) {
f2.add(f);
File[] files = f.listFiles();
for (File file : files) {
getAllFile(file, f1, f2);
}
}
}
}
文件过滤器查找某一格式文件(lambda表达式格式)
public class lambdaguolueqi {
public static void main(String[] args) {
File f = new File("f:");
getAllFile(f);
}
public static void getAllFile(File a) {
File[] f = a.listFiles(pathname ->pathname.isDirectory()||pathname.getName().endsWith(".java"));
for (File file : f) {
if (file.isDirectory()) {
getAllFile(file);
} else {
System.out.println(file);
}
}