Java基础系列34-file类别

x33g5p2x  于2021-12-18 转载在 其他  
字(4.4k)|赞(0)|评价(0)|浏览(819)

一. 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;//结束方法调用
			}
		}
	}

}

参考:

  1. https://blog.csdn.net/qq_43529621/article/details/116603510
上一篇:异常
下一篇:IO流

相关文章