1.文件
file:文件
directory:文件夹/目录
path:路径
2.路径
1) windows平台:.\docs\1.docx
Linux/unix平台: ./docs/1.docx
所以为了使用不同环境的写法,应使用:“d:” + File.separator + “docs”+ File.separator + “1.docx”
2)绝对路径:是一个完整的路径,以盘符(c)开始的路径 如:c:\Users\itcast
相对路径:是一个简化的路径,相当于当前项目的根目录 如:123.txt
注意:路径是不区分大小写;
路径中的名称分隔符Windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。
3.File的构造方法
1)File(String pathname) 通过将给定路径名字字符串装换为抽象路径名来创建一个新的File实例
2) File(String parent, String child)
好处:父路径和子路径,可以单独书写,使用起来非常灵活,父路径和子路径都可以变化。
3)File(File parent, String child)
好处:父路径是File类型,可以使用File类的方法对路径进行一些操作,再使用路径创建对象。
4.常用的方法
1)public String getAbsolutePath();
返回此File的绝对路径名字字符串。
2)public String getPath();
返回构造方法中传递的路径。
3)public String getName();
返回的就是构造方法传递路径的结尾部分。
4)public long length();
返回的是构造方法指定的文件的大小,以字节为单位。
注意:文件夹是没有大小概念的,不能获取文件夹的大小;
如果构造方法中给出的路径不存在,那么length方法返回0。
5)public boolean exists();
判断构造方法中的路径是否存在。
6)public boolean isDirectory();
判断该文件是否是文件夹。
7)public boolean isFile();
判断该文件是否是文件。
8)public boolean createNewFile();
创建一个新的文件。
9)public booolean mkdir();
创建单级文件夹。
10) public boolean mkdirs();
创建多级文件夹。
11)public boolean delete();
删除构造方法路径中给出的文件/文件夹。
12)File类遍历目录功能
(1)public String[] list(); 返回一个String数组。
(2)public File[] listFiles(); 返回一个File数组。
都表示该File目录中的左右子文件目录。
注意:list方法和listFiles方法遍历的是构造方法中给出的目录;
如果构造方法中给出的目录不存在,会抛出空指针异常;
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常。
5.递归打印多级目录
public static void getAllFile(File dir) {
System.out.println(dir);//打印被遍历的目录名称
File[] files = dir.listFiles();
for(File f : files) {
//对遍历得到的File对象f进行判断,判断是否是文件夹
if(f.isDirectory()) {
//f是一个文件夹,则继续遍历这个文件夹
//我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
//所以直接调用getAllFile方法即可:递归(自己调用自己)
getAllFile(f);
}else {
//f是一个文件,直接打印即可
System.out.println(f);
}
}
}
6.使用过滤器显示指定类型的文件
public static void main(String[] args) {
File dir = new File("src" + File.separator + "File");
File[] subs = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File sub) {
return sub.getName().endsWith(".java");//.txt
//返回true,表示将当前file对象保留
}
});
for(File sub : subs) {
System.out.println(sub.getName());
}
}