File类:是java中针对文件进行操作的一个类
该类可以根据封装的文件路径对指定的文件或者目录进行相关的操作
该类的构造方法是需要我们传递参数的,该参数就是需要封装的文件路径
File file = new File("src/FileTest");
上述给的是相对路径,也可以给绝对路径
绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件
相对路径:必须使用取自其他路径名的信息进行解释
我们可以通过该类中的方法进行拿取文件的路径名称或者绝对路径
方法名 | 作用 |
---|---|
String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
String getName | 返回由此抽象路径名表示的文件或目录的名称 |
//封装一个路径
File file = new File("src/FileTest");
//打印路径
System.out.println(file.getAbsolutePath());//打印结果:C:\Users\Administrator\eclipse-workspace\Training\src\FileTest
System.out.println(file.getName());//打印结果:FileTest
通过上述两个方法分别打印出了绝对路径和抽象路径名
我们还可以对路径上的文件进行判断
方法名 | 作用 |
---|---|
boolean exists() | 测试此抽象路径名表示的文件或目录是否存在 |
boolean isDirectory() | 测试此抽象路径名表示的文件是否为目录 |
boolean isFile() | 测试此抽象路径名表示的文件是否为普通文件 |
//封装一个路径
File file = new File("E:\\Test");
//判断是否存在
System.out.println(file.exists());//打印结果:true
//判断是否为目录
System.out.println(file.isDirectory());//打印结果:true
//判断是否是文件
System.out.println(file.isFile());//打印结果:false
上述方法可以作为条件判断使用
我们也可以通过方法来创建文件和目录
方法名 | 作用 |
---|---|
boolean createNewFile() | 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件 |
boolean mkdir() | 创建由此抽象路径名命名的目录 |
boolean mkdirs() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录 |
//封装一个路径
File file1 = new File("E:\\Test\\file.txt");
//创建一个文件
try {
System.out.println(file1.createNewFile());//打印结果:true
} catch (IOException e) {
e.printStackTrace();
}
//封装一个含不存在目录的文件
File file2 = new File("E:\\Test\\test");
//创建一个目录
System.out.println(file2.mkdir());//打印结果:true
//封装一个含不存在的多级目录
File file3 = new File("E:\\Test\\Java\\JavaWeb");
//创建多级目录
System.out.println(file3.mkdirs());//打印结果:true
注意:如果使用mkdir()创建多级目录的时候会报错哟
我们也可以删除文件或者目录
方法名 | 作用 |
---|---|
boolean delete() | 删除由此抽象路径名表示的文件或目录 |
注意:如果要删除的文件夹下还有其他的文件或文件夹时无法直接删除
//封装一个路径
File file = new File("E:\\Test\\file.txt");
//删除file.txt文件
System.out.println(file.delete());//打印结果:true
注意:此删除操作是不可逆的哟
我们还可以获取到路径名和文件的数组
方法名 | 作用 |
---|---|
String[] list() | 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录 |
File[] listFiles() | 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件 |
//封装一个路径
File file = new File("E:\\Test");
//获取到文件名的数组
String[] list = file.list();
//遍历
for(String s : list) {
System.out.println(s);
/*
* 打印结果:
* Java
* Java
*/
}
//获取到文件的数组
File[] fileList = file.listFiles();
//遍历数组
for(File f : fileList) {
System.out.println(f.getAbsolutePath());
/*
* 打印结果:
* E:\Test\Java
* E:\Test\test
*/
}
通过上述方法,我们可以做一个案例,就是删除整个文件夹的目录和文件
这里就可以使用到递归了
public static void main(String[] args) {
//封装路径
File file = new File("E:\\Test");
//调用方法进行删除文件
FileDelete(file);
/*
* 打印结果:
* 删除成功:E:\Test\file.txt
* 删除成功:E:\Test\Java\java.txt
* 删除成功:E:\Test\Java\JavaWeb\hello.txt
* 删除成功:E:\Test\Java\JavaWeb
* 删除成功:E:\Test\Java
* 删除成功:E:\Test\test\world.txt
* 删除成功:E:\Test\test
*/
}
/**
*
* @param file : 得到需要删除的文件路径
*/
public static void FileDelete(File file) {
//获取当前文件的所有文件
File[] fil = file.listFiles();
//遍历进行删除
for(File e : fil) {
//判断是否是目录,是目录就递归
if(e.isDirectory()) {
//调用自己继续删除
FileDelete(e);
e.delete();
System.out.println("删除成功:" + e.getAbsolutePath());
}else {
//文件直接删除
e.delete();
System.out.println("删除成功:" + e.getAbsolutePath());
}
}
}
通过递归我们就可以删除指定文件夹下的所以文件
今天的分享就到这里了,如果有错误的地方,欢迎大家来指点!