package test;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class FileReview {
/**
* 创建
* createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
*
* 删除
* delete() 删除此抽象路径名表示的文件或目录。
*
* 判断 isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
* isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
* isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
*
* 获取信息
* getName() 返回由此抽象路径名表示的文件或目录的名称。
* getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
* getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
* getPath() 将此抽象路径名转换为一个路径名字符串。
* length() 返回由此抽象路径名表示的文件的长度。 list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
* listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件,不能查看子目录下的文件,需用递归。
* listRoots() 列出可用的文件系统根。
* list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
*
*
*/
public static void main(String[] args) throws IOException {
// 建立
File f = new File("D:/qq/tyt.txt");
f.createNewFile();
File d = new File("D:/bw");
d.mkdir();
File bf = new File("D:/bw", "bf.txt");
bf.createNewFile();
/*
* //删除 f.delete();
*/
System.out.println("是否是文件:" + f.isFile());
System.out.println("是否是目录:" + f.isDirectory());
System.out.println("是否是隐藏文件:" + f.isHidden());
// 获取信息
System.out.println("文件名是:" + f.getName());
System.out.println("父目录是:" + f.getParent());
System.out.println("路径名是:" + f.getPath());
System.out.println("文件长度是:" + f.length());
/*
* 返回的是字符串数组,表示目录下的目录与文件
*/
String[] s = d.list();
for (String string : s) {
System.out.println("目录有:" + string);
}
/*
* listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
*/
File[] fs = d.listFiles();
for (File file : fs) {
System.out.println("目录下的文件有:" + file);
}
/*
* 返回的是File类型
*/
File[] arr = f.listRoots();
for (File file : arr) {
System.out.println("根目录有 :" + file);
}
list(d);//递归
System.err.println("-----------华丽的分割线---------------");
//自定义过滤器:list(FilenameFilter filter) 返回一个字符串数组
String[] str = d.list(new MyFilenameFilter(".java"));//FilenameFilter filter = new MyFilenameFilter(".java")
for (String string : str) {
System.out.println("bw文件夹里是JAVA的文件有 : "+string);
}
}
/*
* 文件的递归
*/
public static void list(File d) {
if (d.isDirectory()) {//如果是文件夹,则继续列出
File[] fi = d.listFiles();
if (fi != null) {//文件夹内容已列出
for (File file : fi) {
list(file);//继续列出每一个内容
}
}
}
System.out.println(d);
}
}
/* 自定义java文件过滤器
* 1.FilenameFilter是接口,要自定义一个类实现接口
* 2.覆写接口里的抽象方法:accept
*/
class MyFilenameFilter implements FilenameFilter{
//私有过滤器名字
private String Filtername;
//MyFilenameFilter的构造函数,传入过滤器的名字
MyFilenameFilter(String Filtername){
this.Filtername = Filtername;
}
//覆写accept方法
@Override
public boolean accept(File dir, String name) {//测试指定文件是否应该包含在某一文件列表中
return name.endsWith(Filtername);//当指定文件的名字与要过滤器名一致时,结束返回true
}
//提供getter方法
public String getFiltername() {
return Filtername;
}
}