Java基础系列34-file类别
2021-09-16 本文已影响0人
只是甲
一. File类的概述
File :文件和目录路径名的抽象表示形式
也就是说文件和目录(文件夹)是可以通过File封装成对象的
File类的构造方法
//a. 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String pathname)
//b. 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child)
//c. 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实
File(File parent, String child)
代码:
package Java_study;
import java.io.File;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark File类的构造方法
*
*/
public class file1 {
public static void main(String[] args) {
//以下的f1,f2,f3做的是同样的事情,就是把d:\\b.txt转换为了一个File对象
//a. File(String pathname)
File f1 = new File("d:\\b.txt");
//b. File(String parent, String child)
File f2 = new File("d:","b.txt");
//c. File(File parent, String child)
File f3_path = new File("d:");
File f3 = new File(f3_path, "b.txt");
}
}
二. File类的方法
2.1 创建
方法摘要
//a.创建文件 如果文件不存在,创建文件并返回true 如果文件存在,创建文件失败并返回false
public boolean createNewFile():
//b.创建目录 如果目录不存在,创建目录并返回true 如果目录存在,创建目录失败并返回false
public boolean mkdir()
//c.创建多级目录
public boolean mkdirs()
代码:
package Java_study;
import java.io.File;
import java.io.IOException;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark File类方法--创建
*
*/
public class file2 {
public static void main(String[] args) {
//需求1:我要在d盘目录下创建一个文件a.txt
File f1 = new File("D:\\a.txt");
try {
System.out.println("1.createNewFile:" + f1.createNewFile());
} catch (IOException e) {
System.out.println("IO异常,创建失败");
}
//需求2:我要在d盘目录下创建一个目录bb
File f2 = new File("D:" + File.separator + "bb");
System.out.println("2.mkdir:" + f2.mkdir());
//需求3:我要在d盘目录下创建一个多级目录cc\\dd
File f3 = new File("D:\\cc" + File.separator + "dd");
System.out.println("3.mkdirs:" + f3.mkdirs());
//需求4:我要在d盘目录下创建一个文件ee\\f.txt
File f4_path = new File("D:\\ee");
File f4_file = new File(f4_path, "f.txt");
System.out.println("4.mkdir:" + f4_path.mkdirs());
try {
System.out.println("4.createNewFile:" + f4_file.createNewFile());
} catch (IOException e) {
System.out.println("IO异常,创建失败");
}
}
}
测试记录:
1.createNewFile:true
2.mkdir:true
3.mkdirs:true
4.mkdir:true
4.createNewFile:true
2.2 删除
相对路径&绝对路径
绝对路径:是以盘符开始的路径。d:\aa\b.txt
相对路径:不以盘符开始。相对于当前的项目而言,在项目的目录下。如何显示出来呢?刷新项目就可以了
方法摘要
public boolean delete():删除文件和目录
注意事项
如果一个目录中有内容(目录,文件),就不能直接删除。
应该先删除目录中的内容,最后才能删除目录。
2.2.1 删除文件
代码:
package Java_study;
import java.io.File;
import java.io.IOException;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark File类方法--删除
*
*/
public class file3 {
public static void main(String[] args) throws InterruptedException, IOException{
//需求1. createNewFile:相对路径创建一个文件a.txt.
File f1 = new File("a.txt");
System.out.println("1.创建一个文件a.txt: " + f1.createNewFile());
//需求2. mkdir+createNewFile:相对路径创建一个文件cc\\d.txt
File f2_path = new File("cc");
File f2_file = new File("cc" + File.separator + "a.txt");
System.out.println("3.创建一个目录cc:" + f2_path.mkdirs());
System.out.println("3.创建一个文件cc\\d.txt: " + f2_file.createNewFile());
//等待10秒
File projectPath = new File("");//参数为空,表示当前项目根目录
System.out.println("全部创建完毕,请进入 " + projectPath.getAbsolutePath() + " 目录查看文件,15秒后开始删除");
Thread.sleep(15000);//线程等待15秒
//需求4.delete:相对路径删除a.txt这个文件
File f4 = new File("a.txt");
System.out.println("删除a.txt:" + f4.delete());
//需求5. delete: 相对路径删除cc这个目录(先删除d.txt这个文件,再删除cc这个目录)
File f5_file = new File("cc" + File.separator + "a.txt");
File f5_path = new File("cc");
System.out.println("删除cc\\a.txt文件: " + f5_file.delete() );
System.out.println("删除cc目录: " + f5_path.delete());
}
}
测试记录:
1.创建一个文件a.txt: true
3.创建一个目录cc:true
3.创建一个文件cc\d.txt: true
全部创建完毕,请进入 D:\Users\Administrator\eclipse-workspace\Java_study 目录查看文件,15秒后开始删除
删除a.txt:true
删除cc\a.txt文件: true
删除cc目录: true
2.2.2 遍历File目录,删除所有目录下文件
代码:
package Java_study;
import java.io.File;
import java.io.IOException;
/**
*
* @author 只是甲
* @date 2021-07-15
* @remark 遍历File目录,删除所有文件
*
*/
public class file4 {
public static void main(String[] args) throws InterruptedException, IOException {
File f_path = new File("D:\\test");
deleteFile(f_path);
}
public static void deleteFile(File f) {//传一个File对象f进去 因为要调用其方法
if (f != null) {//判断f数据是否为空 因为可能有人会传null值进来
if (f.exists()) {//判断该抽象路径的目录和文件是否存在
if (f.isDirectory()) {//判断是否是目录
File[] listFiles = f.listFiles();//调用listFiles()方法返回一个File对象组成的数组集合
if (listFiles == null) {//如果该数组为Null说明没有文件和目录对象 就是一个空的文件夹
f.delete();//直接删除
} else {//不为空的文件夹
for (File file : listFiles) {//遍历该集合
deleteFile(file);//遍历到的每个File对象传入demo()方法
}
f.delete();//最后将这个不为空的文件夹删除
}
} else {//不是目录可能是是文件或者不存在
f.delete();//直接删除
}
} else {//为Null
return;//结束方法调用
}
}
}
}