0
点赞
收藏
分享

微信扫一扫

【JavaSE】Java基础语法(三十三):File 一文详解

捡历史的小木板 2023-06-05 阅读 91

文章目录



在这里插入图片描述

1. File类概述和构造方法

  • File类介绍

    • 它是文件和目录路径名的抽象表示
    • 文件和目录是可以通过File封装成对象的
    • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也
    • 可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
  • File类的构造方法
    在这里插入图片描述

  • 示例代码

    public class FileDemo01 {
    	public static void main(String[] args) {
    		//File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
    		File f1 = new File("E:\\snow\\java.txt");
    		System.out.println(f1);
    		
    		//File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例
    		File f2 = new File("E:\\snow","java.txt");
    		System.out.println(f2);
    		
    		//File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的File实例
    		File f3 = new File("E:\\snow");
    		File f4 = new File(f3,"java.txt");
    		System.out.println(f4);
    	}
    }
    

2. 绝对路径和相对路径

  • 绝对路径
    是一个完整的路径,从盘符开始
  • 相对路径
    是一个简化的路径,相对当前项目下的路径
  • 示例代码
    public static void main(String[] args) {
    	// 是一个完整的路径,从盘符开始
    	File file1 = new File("D:\\snow\\a.txt");
    	
    	// 是一个简化的路径,从当前项目根目录开始
    	File file2 = new File("a.txt");
    	File file3 = new File("模块名\\a.txt");
    }
    

3. File类创建功能【应用】

  • 方法分类
    在这里插入图片描述

  • 示例代码

public class FileDemo02 {
	public static void main(String[] args) throws IOException {
		//需求1:我要在E:\\snow目录下创建一个文件java.txt
		File f1 = new File("E:\\snow\\java.txt");
		System.out.println(f1.createNewFile());
		System.out.println("--------");
		
		//需求2:我要在E:\\snow目录下创建一个目录JavaSE
		File f2 = new File("E:\\snow\\JavaSE");
		System.out.println(f2.mkdir());
		System.out.println("--------");
		
		//需求3:我要在E:\\snow目录下创建一个多级目录JavaWEB\\HTML
		File f3 = new File("E:\\snow\\JavaWEB\\HTML");
		// System.out.println(f3.mkdir());
		System.out.println(f3.mkdirs());
		System.out.println("--------");
		
		//需求4:我要在E:\\snow目录下创建一个文件javase.txt
		File f4 = new File("E:\\snow\\javase.txt");
		// System.out.println(f4.mkdir());
		System.out.println(f4.createNewFile());
	}
}

4. File类删除功能【应用】

  • 方法分类
    在这里插入图片描述
    只能删除文件或者空文件夹

  • 示例代码

public class FileDemo03 {
	public static void main(String[] args) throws IOException {
		// File f1 = new File("E:\\snow\\java.txt");
		//需求1:在当前模块目录下创建java.txt文件
		File f1 = new File("myFile\\java.txt");
		// System.out.println(f1.createNewFile());
		
		//需求2:删除当前模块目录下的java.txt文件
		System.out.println(f1.delete());
		System.out.println("--------");
		
		//需求3:在当前模块目录下创建snow目录
		File f2 = new File("myFile\\snow");
		// System.out.println(f2.mkdir());
		
		//需求4:删除当前模块目录下的snow目录
		System.out.println(f2.delete());
		System.out.println("--------");
		
		//需求5:在当前模块下创建一个目录snow,然后在该目录下创建一个文件java.txt
		File f3 = new File("myFile\\snow");
		// System.out.println(f3.mkdir());
		File f4 = new File("myFile\\snow\\java.txt");
		// System.out.println(f4.createNewFile());
		
		//需求6:删除当前模块下的目录snow
		System.out.println(f4.delete());
		System.out.println(f3.delete());
	}
}

5. File类判断和获取功能【应用】

  • 判断功能
    在这里插入图片描述

  • 获取功能
    在这里插入图片描述

  • 示例代码

    public class FileDemo04 {
    	public static void main(String[] args) {
    		//创建一个File对象
    		File f = new File("myFile\\java.txt");
    		// public boolean isDirectory():测试此抽象路径名表示的File是否为目录
    		// public boolean isFile():测试此抽象路径名表示的File是否为文件
    		// public boolean exists():测试此抽象路径名表示的File是否存在
    		System.out.println(f.isDirectory());
    		System.out.println(f.isFile());
    		System.out.println(f.exists());
    		
    		// public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
    		// public String getPath():将此抽象路径名转换为路径名字符串
    		// public String getName():返回由此抽象路径名表示的文件或目录的名称
    		System.out.println(f.getAbsolutePath());
    		System.out.println(f.getPath());
    		System.out.println(f.getName());
    		System.out.println("--------");
    		
    		// public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File
    		对象数组
    		File f2 = new File("E:\\snow");
    		File[] fileArray = f2.listFiles();
    		for(File file : fileArray) {
    			// System.out.println(file);
    			// System.out.println(file.getName());
    			if(file.isFile()) {
    				System.out.println(file.getName());
    			}
    		}
    	}
    }
    

6. 6File类练习一【应用】

  • 案例需求
    在当前模块下的aaa文件夹中创建一个a.txt文件

  • 实现步骤

    • 创建File对象,指向aaa文件夹
    • 判断aaa文件夹是否存在,如果不存在则创建
    • 创建File对象,指向aaa文件夹下的a.txt文件
    • 创建这个文件
  • 代码实现

    public class Test1 {
    	public static void main(String[] args) throws IOException {
    		//练习一:在当前模块下的aaa文件夹中创建一个a.txt文件
    		/* File file = new File("filemodule\\aaa\\a.txt");
    		file.createNewFile();*/
    		//注意点:文件所在的文件夹必须要存在.
    		//1.创建File对象,指向aaa文件夹
    		File file = new File("filemodule\\aaa");
    		//2.判断aaa文件夹是否存在,如果不存在则创建
    		if(!file.exists()){
    			//如果文件夹不存在,就创建出来
    			file.mkdirs();
    		}
    		//3.创建File对象,指向aaa文件夹下的a.txt文件
    		File newFile = new File(file,"a.txt");
    		//4.创建这个文件
    		newFile.createNewFile();
    	}
    }
    

7. File类练习二【应用】

  • 案例需求
    删除一个多级文件夹

  • 实现步骤

    • 定义一个方法,接收一个File对象
    • 遍历这个File对象,获取它下边的每个文件和文件夹对象
    • 判断当前遍历到的File对象是文件还是文件夹
    • 如果是文件,直接删除
    • 如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
    • 参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
  • 代码实现

    public class Test2 {
    	public static void main(String[] args) {
    		//练习二:删除一个多级文件夹
    		//delete方法
    		//只能删除文件和空文件夹.
    		//如果现在要删除一个有内容的文件夹?
    		//先删掉这个文件夹里面所有的内容.
    		//最后再删除这个文件夹
    		File src = new File("C:\\Users\\apple\\Desktop\\src");
    		deleteDir(src);
    	}
    	
    	//1.定义一个方法,接收一个File对象
    	private static void deleteDir(File src) {
    		//先删掉这个文件夹里面所有的内容.
    		//递归 方法在方法体中自己调用自己.
    		//注意: 可以解决所有文件夹和递归相结合的题目
    		//2.遍历这个File对象,获取它下边的每个文件和文件夹对象
    		File[] files = src.listFiles();
    		//3.判断当前遍历到的File对象是文件还是文件夹
    		for (File file : files) {
    			//4.如果是文件,直接删除
    			if(file.isFile()){
    				file.delete();
    			}else{
    				//5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
    				deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象
    			}
    		}
    		//6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
    		src.delete();
    	}
    }
    

在这里插入图片描述

举报

相关推荐

0 条评论