1.File类的概述
File类:它是文件和目录路径名的抽象表示。
2.File类的构造方法
//第一种(最常用):File(String pathname);该处的参数所表示的文件可以存在也可以不存在。
//举例
File file = new File("E:\\filedemo\\test.txt");
System.out.println(file);//输出E:\\filedemo\\test.txt,说明File类重写了toString方法
//第二种:File(String parent,String child)
File file1 = new File("E:\\filedemo", "test.txt");
System.out.println(file1);//E:\\filedemo\\test.txt
//第三种:File(File parent,String child)
File file2 = new File("E:\\filedemo");
File file3 = new File(file2, "test.txt");
System.out.println(file3);//E:\\filedemo\\test.txt
3.File类的创建功能
/**
* File类的创建功能:
* createNewFile() 创建新的空文件
* mkdir() 创建目录
* mkdirs() 可以创建多级目录
*/
//createNewFile() 创建新的空文件
File file = new File("E:\\filedemo\\test.txt");
System.out.println(file.createNewFile());//存在不创建返回false;不存在创建返回true
//mkdir() 创建目录
File file1 = new File("E:\\filedemo\\filetest");
System.out.println(file1.mkdir());//成功返回true
//mkdirs() 可以创建多级目录
File file2 = new File("E:\\filedemo\\javaweb\\html");
System.out.println(file2.mkdirs());//成功返回true
注意事项
:
- 不存在创建返回true;存在不创建返回false。
- 创建时需调对方法。若创文件时调用创建目录的方法,则会将文件名作为目录名创建。
- 若同级目录下文件名和目录名一致,也会导致创建失败。
4.File类判断和获取功能
File file = new File("java.txt");//将java.txt提前创建在项目目录下,与src同级目录
方法名 | 返回值 |
---|---|
file.isDirectory() | 是不是目录(false) |
file.isFile() | 是不是文件(true) |
file.exists() | 是否存在(true) |
file.getAbsoluteFile() | 返回绝对路径即全路径 |
file.getPath() | 返回相对路径 |
file.getName() | 获取文件名称 |
File file1 = new File("E:\\javaweb");//在E盘下创建javaweb目录,再往该目录下添加文件和目录
String[] list = file1.list();
for (String s : list) {
System.out.println(s);//拿到所有文件或目录的名称
}
File[] files = file1.listFiles();
for (File file2 : files) {
//System.out.println(file2);//拿到所有文件和目录的绝对路径
if (file2.isDirectory()){
System.out.println(file2.getName());//拿到该目录下所有目录的名称
}
}
5.File类删除功能
删除功能
delete();//删除文件和目录
注意事项
- 删除的文件或目录的路径需要事先确定,并检查无误。
- 删除的时候需要先将某个目录下的内容(文件或目录)删除,再删除该目录,否则导致删除失败。
6.习题练习
需求
:
给定一个目录的路径,该目录下有文件和目录,要求遍历该目录下的所有文件,并输出每个文件的绝对路径。
分析
:
- 要输出该目录下每个文件的绝对路径需要用到
listfiles()
,getAbsoluteFile()
; - 该目录下有文件和目录,需要进行判断,如果是目录,目录中也有文件,则需要使用
递归
;如果是文件,直接输出绝对路径。
代码解答
:
import java.io.File;
/**
需求:给定一个路径(E:\\javaweb),该目录下有文件和目录,要求遍历该目录下的所有文件内容,并输出每个文 件的绝对路径。
*/
public class FileDemo{
public static void main(String[] args) {
File file = new File("E:\\javaweb");
getAllFilePath(file);
}
public static void getAllFilePath(File file){
File[] files = file.listFiles();
if (files != null){
for (File file1 : files) {
if (file1.isDirectory()){//如果是目录
getAllFilePath(file1);//递归调用
}else{
System.out.println(file1.getAbsoluteFile());//得到所有文件内容的绝对路径
}
}
}
}
}