File 类用于文件的操作 是在 java .io包下的File类下
构造方法:
- list() 返回 指定目录 下的 所有 的 目录和文件的名字 String[]
- list(FilenameFilter filter) 得到的所有的名字 进行对应的过滤
- listFiles() 返回 指定目录 下的 所有 的 目录和文件的 file 对象表现形式
File[] - listFiles(FilenameFilter filter) 得到的所有的名字 进行对应的过滤
package com.qf.demo2;
import java.io.File;
import java.io.FilenameFilter;
public class Test4 {
public static void main(String[] args) {
//File file = new File("D\\java上课内容\\2015新版PPT":);
File file = new File("D:\\java上课内容");
String[] strings = file.list();
/*for (String string : strings) {
System.out.println(string);
}
File[] files = file.listFiles();
for (File file2 : files) {
System.out.println(file2);
}*/
String[] strings2 = file.list(new MyFilter());
for (String string : strings2) {
System.out.println(string);
}
File[] file2 = file.listFiles(new MyFilter());
for (File file3 : file2) {
System.out.println(file3);
}
}
}
class MyFilter implements FilenameFilter{
@Override // dir 指定的目录 name dir 指定目录下的文件或者是文件夹的名字
public boolean accept(File dir, String name) {
// if(name.endsWith(".txt")){
// return false;
// }
// 假如是 文件 就 过滤掉, 如果是文件夹 , 就保留
// D:\\java上课内容 \\ java新版ppt
File file = new File(dir,name);
if(file.isFile()){
return false;
}
return true;// 返回ture 证明 保留下来的
// 返回 false 要被过滤掉的
}
}
- 递归
- 自己调用自己
- 以此类推
- 同性质的问题 范围缩小, 直到 结果 可以直接的出来
需求: 得到指定文件夹下的所有的文件
计算 指定文件夹 所有文件 和 文件夹的个数
package com.qf.demo2;
import java.io.File;
public class Test5 {
public static void main(String[] args) {
findFile(new File("D:\\java上课内容"));
}
// 得到 指定文件夹下一层的所有的文件和文件
// // 如果是文件 打印输出, 如果文件夹
public static void findFile(File file){// 既可以代表文件也可以代表文件夹
// 保证非空
if(file != null){
// 保证是文件夹
if(!file.isFile()){
// 得到文件夹下的文件或者是 文件夹了
File[] files = file.listFiles();// 新版ppt ppt .pptx
for (File file2 : files) {// 把所有的文件和文件夹遍历一遍
findFile(file2);// 无论是文件还是文件夹 都可以调用 此方法
}
}else{
System.out.println(file);
}
}else{
System.out.println("闹着玩呢??????");
}
}
}