IO面试题
1.给你一个文件夹,删除指定垃圾文件
package demo22IO;
import java.io.File;
//文件遍历
public class Demo3aaa {
public static void main(String[] args) {
File f = new File("F:\\班级表格");//封装路径
File[] files = f.listFiles();//获取该路径下所有文件/文件夹存入数组
listFiles(files);
}
/**
* 定义一个遍历文件的方法
* @param files
*/
private static void listFiles(File[] files) {
if(files!=null&&files.length>0){ //首先文件数组存在且要有文件/夹
for (File f:files) { //遍历判断是文件还是文件夹
if (f.isFile()){ //是文件
if (f.getName().endsWith(".ppt")){//若文件后缀java且<10M则打印路径
if (f.length()<10*1024*1024){ //1B-1KB-1MB
System.out.println("找到一个.ppt文件:"+f.getAbsolutePath());
//f.delete();//删除文件
}
}
}else {//是文件夹
File[] files1 = f.listFiles();//再获取该文件夹下所有文件/文件夹
listFiles(files1);//递归
}
}
}
}
}
使用文件过滤器接口
private static void getFiles1(File file) { //过滤文件方法
//通过文件file获取过滤后的子文件/夹存入数组,并判空。
//listFiles()遍历,参数传递文件过滤器接口的实现
File[] files = file.listFiles(new FileFilter(){
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".ppt") || pathname.isDirectory()) {
return true;
}
return false;
}
});
if (files != null && files.length > 0) {
//3.遍历文件数组
for (File f : files) {
if (f.isDirectory()) { //如果是文件夹,则递归继续处理这个文件夹
getFiles(f);
} else { //是文件,过滤后保留在数组的文件一定pdf
System.out.println("发现一个ppt:" + f.getAbsolutePath());
}
}
}
}