File类

概述:

  • java.io.file类是文件和目录路径名的抽象表示。主要用于文件和目录的创建、查找、删除等操作。
  • java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作。
  • 可以使用File类的方法:
    1、创建一个文件、文件夹
    2、删除一个文件、文件夹
    3、获取一个文件、文件夹
    4、判断文件、文件夹是否存在
    5、对文件进行遍历
    6、获取文件的大小
  • File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法。
构造方法
  • public File(String pathname):通过将给定路径名字符串转换为抽象路径来创建一个新file实例
  • public File(String parent,String child):根据parent路径名字符串和child路径名字符串创建一个新的file实例。
  • public File(File file,String child):根据parent抽象路径名和child路径名字符串创建一个新的file实例
    代码示例:
public static void main(String[] args) {
		/**
		 * static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 
		   static char pathSeparatorChar 与系统有关的路径分隔符。 
		   static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 
		   static char separatorChar 与系统有关的默认名称分隔符。 
		 */
		String pathseparator = File.pathSeparator;
		System.out.println(pathseparator);//; 路径分隔符 windows:分号   linux:冒号
		String separator = File.separator;
		System.out.println(separator);// \名称分隔符  windows:反斜杠 linux:正斜杠  /
		char separatorchar = File.separatorChar;
		System.out.println(separatorchar);
		
	}
/*
 * 
 * 路径:
 *    绝对路径: 是一个完整的路径 一般以盘符(D:,C:,c:,d:)为开头
 *        如: D:\Developer\Java\jdk1.8.0_191\README.html
 *           D:\123.txt
 *    
 *    相对路径:是一个简化的路径
 *        相对指的是相对于当前项目的根目录(E:\codes\workspace\day26_LambdaAndFile)
 *        如果使用当前项目的根目录,路径可以简化书写:
 *        E:\codes\workspace\day26_LambdaAndFile\.classpath---->简化为:.classpath(可以省略前面项目的根目录)
 * 	   注意:
 *       1.路径是不区分大小写
 *       2.路径中的文件名称分隔符windows使用反斜杠	,反斜杠是转义字符,两个反斜杠才代表一个普通的反斜杠。
 */
public class Demo02File {

	public static void main(String[] args) {
//		show01();
//		show02("D:\\", "Developer\\Java\\jdk1.8.0_191\\README.html");
		File parent = new File("D:\\");	
		String child = "Developer\\Java\\jdk1.8.0_191\\README.html";
		show03(parent, child);
	}
	
	/*
	 *  public File(File parent,String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File实例。
	 *  参数:把路径分成了两部分
	 *      File file 父路径
	 *      String child 子路径
	 *  好处:
	 *     父路径和子路径,可以单独写
	 *     父路径是File类型,可以使用File类中的方法对路径进行一些操作
	 */
	public static void show03(File parent,String child) {
		File file = new File(parent,child);
		System.out.println(file);// D:\Developer\Java\jdk1.8.0_191\README.html
	}
	
	
	/*
	 * public File(String parent,String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
	 * 参数:把路径分成了两部分
	 *    String parent 父路径
	 *    String child  子路径
	 * 好处:
	 *    父路径和子路径,可以单独写,   
	 */
	public static void show02(String parent,String child) {
		File file = new File(parent, child);
		System.out.println(file);//D:\Developer\Java\jdk1.8.0_191\README.html
	}
	
	
	/*
	 * 使用第一个构造方法  public File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
	 * 参数:
	 *    String pathname:字符串的路径名称
	 *    路径可以是以文件结尾,也可以是以文件夹结尾
	 *    路径可以是相对路径,也可以是绝对路径
	 *    路径可以是存在的,也可以是不存在的
	 *    File对象,只是把字符串路径封装为File类对象,不考虑路径的真实情况。
	 */
	public static void show01() {
		File f1 = new File("D:\\Developer\\Java\\jdk1.8.0_191\\README.html");
		System.out.println(f1);//D:\\Developer\\Java\\jdk1.8.0_191\\README.html
		
		File f2 = new File("D:\\Developer\\Java\\jdk1.8.0_191");
		System.out.println(f2);//D:\Developer\Java\jdk1.8.0_191
		
		File f3 = new File(".project");
		System.out.println(f3);//.project
		
		File f4 = new File("abc.txt");
		System.out.println(f4);//abc.txt
	}
	
}

常用的API方法

  • 获取功能的方法
  • 判断功能的方法
  • 路径功能的方法
  • 创建删除功能的方法
  • 目录遍历功能的方法
    获取功能的方法
  • public String getAbsolutePath():返回次抽象路径名的绝对路径的名字符串。
  • public String getPath():将此File转换为路径名字符串。
  • public String getName():返回由此File表示的文件或目录的名称
  • public long length():返回此File表示文件的长度

/*
 * 获取功能的方法
	- public String getAbsolutePath():返回此File表示的绝对路径名字符串。 
	- public String getPath():将此File转换为路径名字符串
	- public String getName():返回由此File表示的文件或目录的名称。
	- 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 isDirectory():判断此file表示的文件夹是否存在
  • public boolean isFile():判断此file表示的文件是否存在
/*
 * 判断功能的方法
	- public boolean exists():判断File表示的文件或者文件夹是否实际存在
	- public boolean isDirectory():判断此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 booelan mkdir():创建由此file表示的文件夹
  • public boolean mkdirs():创建由此file表示的文件夹,包括任何必须但是又不存在的父目录。
/*
 *创建和删除文件的方法
	- public boolean createNewFile():当且仅当具有该名称的文件不存在时,创建一个新的空的文件,返回值是true
	- public boolean delete():删除由此File表示的文件或者目录
	- public boolean mkdir():创建由此File表示的文件夹
	- public boolean mkdirs():创建由此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目录中的所有的子目录或者子文件
/*
 *目录的遍历
	- public String[] list():返回一个String数组,表示该File目录中的所有的子目录或者子文件。
	- public File[] listFile():返回一个File数组,表示该File目录中的所有的子目录或者子文件。
	
	注意事项:
	    list方法和listFile方法遍历的是构造方法中指定的目录。
	            如果构造方法中给出的目录的路径不存在,会抛出空指针异常。
	            如果构造方法中给出的目录不是一个目录,也会抛出一个空指针异常。         
	
 */
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.StackOverflowError
		
	}
	
	public static void show03(int n) {
		System.out.println("show03......." + n);
		if (n == 1) {
			return;
		}
		show03(n-1);//  java.lang.StackOverflowError
	}
	
	/*
	 * 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
		 */
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值