1(了解)、File类中有两个重要的静态成员变量 —— File.pathSeparator 和 File.separator,它们分别是什么?
pathSeparator = 路径分隔符,在windows是分号;在Linux是冒号:
separator = 文件名称分隔符,在windows是反斜杠\ 在Linux是正斜杠/
2、绝对路径和相对路径的区别是什么?
绝对路径是以盘符为首;
相对路径是简写的路径,相对的是当前项目路径的根目录;
3(了解)、File类的构造方法有哪些?
File f = new File(绝对路径);
File f = new File(相对路径);
File f = new File(父路径,子路径); // 这里的父路径可以是String类,也可以是File类
4(了解)、File类的重要的成员方法有哪些?
f.getAbsolutePath(); // 得到绝对路径
f.getpath(); // 得到绝对路径或者相对路径,f 给的是啥就是啥
f.getName(); // 得到路径的结尾部分 --> 一个文件或者文件夹
f.length(); // 得到文件的大小且以子接为单位 或 0字节(文件不存在或者没有大小概念的文件夹)
f.exists(); // 构造方法的路径是否存在
f.isDirectory(); // 是否是文件夹结尾,路径不存在返回 false,
f.isFile(); // 是否是文件结尾,路径不存在返回 false;用以上两个方法可以加个 if (路径存在)前提
f.createNewFile(); // 创建新文件,文件不存在,返回 true;只能创建文件,不能创建文件夹;路径必须存在否则抛出异常
File f = new File(文件名);f.mkdir(); // 文件夹不存在,创建单级文件夹,返回true;
File f = new File(文件名);f.mkdirs(); // 文件夹不存在,创建多级或单级文件夹,返回true;
File f = new File(文件名);f.delete(); // 用时查
5(了解)、如何用File类遍历文件夹目录?
f.list(); // 存储在一个String类的数组中
f.listFiles(); // 存储在一个File类的数组中
6、如何使用文件过滤器?
File[] files = f.listFiles(FileFilter filter); // 用来过滤文件,需要重写FileFilter接口的
acecpt(File pathname)方法
File[] files = f.listFiles(FilenameFilter filter) // 用来过滤文件名称,需要重写FilenameFilter接口的
accept(File dir, String name)方法 —— dir 是目录,name是文件名
实现类中的 accept(...)方法就是重新定义过滤的规则 —— 返回 true 的文件将被过滤出来保存在数组中
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
String s = pathname.getName();
if(s.endsWith(".pdf")) return true;
else return false;
}
}
public class FilenameFilterImpl implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".pdf");
}
}
public class FileFilterTest {
public static void main(String[] args) {
File dir = new File("D:\\HTH");
File[] arr = dir.listFiles(new FileFilterImpl());
for (File f : arr) {
System.out.println(f);
}
File dir2 = new File("D:\\开题报告");
File[] arr2 = dir2.listFiles(new FilenameFilterImpl());
for (File f : arr2) {
System.out.println(f);
}
}
}
重点:
调用File对象的listFiles(…)重载方法;
重写接口的accept(…)方法