zoukankan      html  css  js  c++  java
  • 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:codesworkspaceday26_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:codesworkspaceday26_LambdaAndFile.classpath
    		
    		File f2 = new File(".classpath");
    		String absolutePath2 = f2.getAbsolutePath();
    		System.out.println(absolutePath2);// E:codesworkspaceday26_LambdaAndFile.classpath
    		
    		File file = new File("day26_LambdaAnd");
    		String absolutePath3 = file.getAbsolutePath();
    		System.out.println(absolutePath3);// E:codesworkspaceday26_LambdaAndFileday26_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.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:codesworkspaceday26_LambdaAndFile.classpath
    			E:codesworkspaceday26_LambdaAndFile.project
    			E:codesworkspaceday26_LambdaAndFileabc.txt
    			E:codesworkspaceday26_LambdaAndFilein
    			E:codesworkspaceday26_LambdaAndFilefile
    			E:codesworkspaceday26_LambdaAndFilesrc
    		 */
    	}
    	
    	/*
    	 * 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
    		 */
    	}
    }
    
    
  • 相关阅读:
    bat学习
    Eclipse调试方法及快捷键
    JDK中的设计模式
    开源-自由-乔布斯
    AOP
    编程语言
    [LeetCode] 160. Intersection of Two Linked Lists(两个单链表的交集)
    [LeetCode] 198. House Robber(小偷)
    [LeetCode] 155. Min Stack(最小栈)
    [LeetCode] 1. Two Sum(两数之和)
  • 原文地址:https://www.cnblogs.com/luayan/p/14125566.html
Copyright © 2011-2022 走看看