File类

File类

 概述

java.io.File类是文件和目录路径名的抽象表示。主要用于文件和目录的创建、查找、删除等操作。

Java把电脑中的文件和文件夹(目录)封装为了一个File类, 我们可以使用File类对文件和文件夹进行操作。

可以使用Flle类的方法:

  • 创建一个文件、 文件夹

  • 删除个文件、 文件夹

  • 获取一个文件、文件夹

  • 判断文件、文件夹是否存在

  • 对文件夹进行遍历

  • 获取文件的大小

File类毕一个与系统无关的类,任何的操作系统都可以使用这个类中的方法。

构造方法

  • public File(String pathname): 通过将给定路径名字符串转换为抽象路径名来创建一个新File 实例。

  • public File(String pathname String child): 根据parent路径名字符串和child路径名字符串创建一个新File 实例。

  • public File(File parent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

常用API方法

  • 获取功能的方法

  • 判断功能的方法

  • 径功能的方法

  • 创建删除功能的方法

  • 目录遍历功能的方法

  • 获取功能的方法

  • public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。

  • public String getPath():将此File转换为路径名字符串

  • public String getName():返回由此抽象路径名表示的文件或目录的名称。

  • public long length():返回此File表示的文件的长度。

public class Demo03File {

	public static void main(String[] args) {
//		show01();
//		show02();
//		show03();
		show04();
	}
	
	/*
	 * public long length():返回此File表示的文件的长度。
	 * 获取的是构造方法中指定的文件的大小,以字节为单位
	 * 注意:
	 *    文件夹是没有大小概念的,不能获取文件夹的大小
	 *    如果构造方法中给出的路径不存在,那么length()方法的返回值是0
	 */
	public static void show04() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		long length = f1.length();
		System.out.println(length);// 232 字节
		
		// 11,346 字节
		File f2 = new File("E:\\documents\\Java运算符优先级.png");
		long length2 = f2.length();
		System.out.println(length2);// 11346
		
		File f3 = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		long length3 = f3.length();
		System.out.println(length3);// 0
		
		File f4 = new File("E:\\codes\\workspace\\day26_Lambda");
		long length4 = f4.length();
		System.out.println(length4);// 0
	}
	
	/*
	 * public String getName():返回由此File表示的文件或目录的名称。
	 * 获取的是构造方法中传递路径的结尾部分(文件还是文件夹)
	 * 
	 */
	public static void show03() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		String name = f1.getName();
		System.out.println(name);// .classpath
		
		File f2 = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		String name2 = f2.getName();
		System.out.println(name2);// day26_LambdaAndFile
		
	}
	
	/*
	 * public String getPath():将此File转换为路径名字符串
	 * 获取构造方法中传递的路径
	 * 
	 * 	源码当中:toString方法
		  public String toString() {
        		return getPath();
    	   }
	 */
	public static void show02() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		String path = f1.getPath();
		System.out.println(path);// E:\codes\workspace\day26_LambdaAndFile\.classpath
		File f2 = new File(".classpath");
		String path2 = f2.getPath();
		System.out.println(path2);// .classpath
	}
	
	/*
	 * public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
	 * 获取的是构造方法里面传递的路径
	 * 无论路径是绝对路径还是相对路径,getAbsolutePath返回的都是绝对路径
	 * 
	 */
	public static void show01() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		String absolutePath = f1.getAbsolutePath();
		System.out.println(absolutePath);// E:\codes\workspace\day26_LambdaAndFile\.classpath
		
		File f2 = new File(".classpath");
		String absolutePath2 = f2.getAbsolutePath();
		System.out.println(absolutePath2);// E:\codes\workspace\day26_LambdaAndFile\.classpath
		
		File file = new File("day26_LambdaAnd");
		String absolutePath3 = file.getAbsolutePath();
		System.out.println(absolutePath3);// E:\codes\workspace\day26_LambdaAndFile\day26_LambdaAnd
	}
}

判断功能的方法

  • public boolean exists():判断File表示的文件或者文件夹是否实际存在

  • public boolean isDirectory0:判断此File表示的文件夹是否存在

  • public boolean isFile():判断此File表示的文件是否存在

public class Demo04File {

	public static void main(String[] args) {
//		show01();
		show02();
	}
	
	/*
	 * public boolean isDirectory():判断此File表示的文件夹是否存在
	 *   用于判断构造方法中给定的路径是否以文件夹结尾
	 *   	是:true
	 *      不是:false
	 * 
	 * public boolean isFile():判断此File表示的文件是否存在
	 *   用于判断构造方法中给定的路径是否以文件结尾
	 *     是:true
	 *     不是:false
	 * 
	 * 注意:
	 *    电脑的硬盘中只有文件和文件夹,两个方法时互斥的
	 *    这两个方法使用的前提是:路径必须是存在的,否则都返回false
	 * 
	 */
	public static void show02() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		System.out.println(f1.isDirectory());// false
		System.out.println(f1.isFile());// true
		
		File f2 = new File("E:\\codes\\workspace\\day26_Lambda");
		
		if (f2.exists()) {
			System.out.println(f2.isDirectory());// false
			System.out.println(f2.isFile());// false
		}
		
		File f3 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.project");
		if (f3.exists()) {
			System.out.println(f3.isDirectory());//false
			System.out.println(f3.isFile());//true
		}
	}
	
	/*
	 * public boolean exists():判断File表示的文件或者文件夹是否实际存在
	 * 用于判断构造方法中的路径是否存在
	 *    存在:true
	 *    不存在:false
	 */
	public static void show01() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		System.out.println(f1.exists());// true
		
		File f2 = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		System.out.println(f2.exists());// true

		File f3 = new File("E:\\codes\\workspace\\day26_Lambda");
		System.out.println(f3.exists());// false
		
		File f4 = new File(".classpath");// 相对路径-->E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath
		System.out.println(f4.exists());// true
		
		File f5 = new File("123.txt");
		System.out.println(f5.exists());//false
		
		File f6 = new File("css样式简单介绍.md");
		System.out.println(f6.exists());// false

	}	
}

创建和删除文件的方法

  • public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建个新的空的文件,返回值是true

  • public boolean delete():删除由此File表示的文件或者目录

  • public boolean mkdir():创建由此File表示的文件夹

  • public boolkan mkdir():创建由此File表示的文件夹,包括任何必须但是又不存在的父目录。

public class Demo05File {

	public static void main(String[] args) throws IOException {
		
//		show01();
//		show02();
		show03();
	}
	
	/*
	 * public boolean delete():删除由此File表示的文件或者目录
	 * 此方法,可以删除构造方法路径中给出的文件或者文件夹
	 * 返回值:布尔值
	 *     true:文件、文件夹删除成功,返回true
	 *     false:如果文件夹中有内容,不会删除返回false;构造方法中不存在的路径返回的是false
	 *     
	 * 注意:
	 *     delete方法时直接从磁盘删除文件/文件夹,不经过回收站。    
	 *     文件夹中有内容不能删除,但是文件中有内容不影响删除
	 *     删除的路径可以是相对路径也可以是绝对路径,
	 *     如果是相对路径,则查看当前项目的根目录是否有该文件或者文件夹,
	 *     如果有且内容为空删除,如果没有返回false,删除失败。
	 */
	public static void show03() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\aa");
		boolean b1 = f1.delete();
		System.out.println(b1);
		
		File f2 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\file");
		boolean b2 = f2.delete();
		System.out.println(b2);
		
		File f3 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\新建文件夹");
		boolean b3 = f3.delete();
		System.out.println(b3);
		
		File f4 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\abc.txt");
		boolean b4 = f4.delete();
		System.out.println(b4);
		
		File f5 = new File("day26_Lambda");
		boolean b5 = f5.delete();
		System.out.println(b5);	
	}
	
	/*
	 * public boolean mkdir():创建由此File表示的文件夹
	 *                         ---》创建单级空文件夹
	   public boolean mkdirs():创建由此File表示的文件夹,包括任何必须但是又不存在的父目录。
	                            ---》既可以创建单级空文件夹,也可以创建多级孔文件夹
	 * 
	 * 注意:
	 *     此方法只能创建文件夹,不能创建文件
	 *     路径不对也不会抛出异常,可以使用相对路径也可以使用绝对路径
	 */
	public static void show02() {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		boolean b1 = f1.mkdir();
		System.out.println(b1);// false
		
		File f2 = new File("E:\\codes\\workspace\\day26_Lambda");
		boolean b2 = f2.mkdir();
		System.out.println(b2);// true
		
		File f3 = new File("E:\\codes\\workspaces\\day26_Lambda");
		boolean b3 = f3.mkdir();
		System.out.println(b3);//false
		
		File f4 = new File("bin");
		boolean b4 = f4.mkdir();
		System.out.println(b4);//false
		
		File f5 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\aa\\bb\\cc\\dd");
		boolean b5 = f5.mkdirs();
		System.out.println(b5);//true
		
		File f6 = new File("file\\aa\\bb\\cc\\dd");
		boolean b6 = f6.mkdirs();
		System.out.println(b6);//true	
	}
	
	/*
	 * public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个新的空的文件,返回值是true
	 * 创建文件的路径和名称在构造方法中声明
	 * 返回值:
	 *     布尔值
	 *     true:文件不存在,创建了空文件,返回为true
	 *     false:文件存在,不会创建,返回false
	 * 注意:
	 *     1. 此方法不能创建文件夹,只能创建文件
	 *     2. 创建文件的路径必须存在,否则就抛出异常。
	 * 该方法携带有IOException
	 */
	public static void show01() throws IOException {
		File f1 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\.classpath");
		boolean b1 = f1.createNewFile();
		System.out.println(b1);// false

		File f2 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\abc.txt");
		boolean b2 = f2.createNewFile();
		System.out.println(b2);// true

		File f3 = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\新建文件夹");
		boolean b3 = f3.createNewFile();
		System.out.println(b3);// true
		
		File f4 = new File("E:\\codes\\workspace\\day26_Lambda\\123.txt");
		boolean b4 = f4.createNewFile();
		System.out.println(b4);// java.io.IOException: 系统找不到指定的路径。	
	}	
}

目录的遍历

  • public String[] list():返回一个String数组,表示该File目录中的所有的子目录或者子文件。

  • public File[] listFile():返回一个File数组,表示该File目录中的所有的子目录或者子文件。

class Fu{
      public Fu(){
      }
}

public class Demo06File extends Fu{
/*	public Demo06File() {
		this("张三");
	}
	
	public Demo06File(String name) {
		Demo06File();
	}*/
	
	public static void main(String[] args) {
//		show01();
//		show02();
		show03(20000);
	}
	
	public static void show04() {
		System.out.println("show04.......");
		//show03();//  java.lang.*Error
		
	}
	
	public static void show03(int n) {
		System.out.println("show03......." + n);
		if (n == 1) {
			return;
		}
		show03(n-1);//  java.lang.*Error
	}
	
	/*
	 * public File[] listFile():返回一个File数组,表示该File目录中的所有的子目录或者子文件
	 * 遍历构造方法中给出的目录,会获取目录中所有的文件夹、文件的名称,把获取到的多个名称存储到一个File类型的数组中
	 * 
	 */
	public static void show02() {
		File file = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		File[] list = file.listFiles();
		// 遍历
		for (File f : list) {
			System.out.println(f.toString());
		}
		
		/*
		 *  E:\codes\workspace\day26_LambdaAndFile\.classpath
			E:\codes\workspace\day26_LambdaAndFile\.project
			E:\codes\workspace\day26_LambdaAndFile\abc.txt
			E:\codes\workspace\day26_LambdaAndFile\bin
			E:\codes\workspace\day26_LambdaAndFile\file
			E:\codes\workspace\day26_LambdaAndFile\src
		 */
	}
	
	/*
	 * public String[] list():返回一个String数组,表示该File目录中的所有的子目录或者子文件。
	 * 遍历构造方法中给出的目录,会获取目录中所有的文件夹、文件的名称,把获取到的多个名称存储到一个String类型的数组中
	 * 
	 */
	public static void show01() {
		// java.lang.NullPointerException
		//File file = new File("E:\\codes\\workspace\\day26_LambdaAndFile\\abc.txt");
		// java.lang.NullPointerException
		// File file = new File("E:\\codes\\workspace\\day26_Lambda");
		File file = new File("E:\\codes\\workspace\\day26_LambdaAndFile");
		String[] list = file.list();
		// 遍历
		for (String string : list) {
			System.out.println(string);
		}
		/*
		 *  .classpath
			.project
			abc.txt
			bin
			file
			src
		 */
	}
}

上一篇:day26 接口的定义与实现


下一篇:SpringBoot框架入门的概念介绍以及实践学习(day26)