java 之 File类

浅析理论:

注:java中,是转义字符,如果要表示一个字符,则必须转义(\)
一、文件路径的抽象(java.io.File)
	三个构造器
		File(String pathname)
			File f = new File("g:/a/b/c.txt");//new File("g:\a\b\c.txt")
			File f = new File("c.txt");//相对路径(相对类路径)
		File(String parent, String child);//传入父目录和文件字符串路径
			File f = new File("g:/a/b", "c.txt");
		File(File parent, String child);//传入父目录File对象和文件字符串路劲
			File f = new File("c:/a/b");
			File f1 = new File(f, "c.txt");
二、常用方法
	File[] fs = File.listRoots(); //获取系统所有盘符	
	String path = fs.getPath(); //返回路径(传入路径)
	String path2 = fs.getAbsolutePath(); //返回绝对路径
	String path3 = fs.getCanonicalPath(); //返回规范路径【常用】
	String path = f.getParent(); //获取父路径
	File parent = f.getParentFile(); //获取父路径

	f.exists();//判断对应路径文件是否已存在
	boolean f.mkdir(); //仅创建当前层级的目录,用于目录的父目录已存在的情况下
	boolean f.mkdirs(); //依次创建所有不存在的层级目录
	f.createNewFile(); //新建文件,如果此路径的父目录存在的时候才会创建成功
	f.delete(); //删除文件
	f.renameTo(File dest); //重命名文件
三、常用属性
	boolean canExecute(); //可执行
	boolean canRead(); //可读
	boolean canWrite(); //可写
	boolean isAbsolute(); //是否绝对路径
	boolean isDirectory(); //是否是目录
	boolean isFile(); //是否是文件
	boolean isHidden(); //是否是隐藏文件
	lastModified(); //最后一次被修改的时间
	long length(); //文件的长度
四、遍历、过滤文件
	String[] list(); //指定表示目录中的文件和目录
	File[] listFiles(); //指定表示目录中的文件和目录
	//只能过滤当前层级的,需要通过递归去判断
	String[] list(FileFilter filter); //指定表示满足指定过滤器的文件和目录
	File[] listFiles(FileFilter filter); //指定表示满足指定过滤器的文件和目录
	File[] listFiles(FilenameFilter filter); //指定表示满足指定过滤器的文件和目录
	

  

浅析案例:

package com.gongxy;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

/**
 * @author gongyg
 * @description File简单案例
 */
public class FileTest {
    public static void main(String[] args) throws Exception {
        //threeConstructorTest();
        //getPathTest();
        //createDeleteFile();
        //commonAttribute();
        iteratorFile();
    }

    /*
    File 三个构造器测试
     */
    static void threeConstructorTest() throws Exception{
        File f1 = new File("f:/测试/a/b.txt");//构造器1
        File f2 = new File("b.txt");//这个是项目根路径
        File f3 = new File("f:/测试/a", "b.txt");//构造器2
        File f5 = new File("f:/测试/a");
        File f6 = new File(f5,"b.txt");//构造器3
        System.out.println(f1.getCanonicalPath());//F:测试a.txt
        System.out.println(f2.getCanonicalPath());//F:3Java-Studymy-java-study-0802.txt
        System.out.println(f3.getCanonicalPath());//F:测试a.txt
        System.out.println(f5.getCanonicalPath());//F:测试a
        System.out.println(f6.getCanonicalPath());//F:测试a.txt
        System.out.println(f1.exists());//false
    }

    /*
    获取相关路径的API
     */
    static void getPathTest() throws Exception{
        File[] fs = File.listRoots();
        System.out.println(Arrays.toString(fs));//[C:\, D:\, E:\, F:]

        File f = new File("../c.txt");
        System.out.println(f.getPath());//..c.txt(传入路径)
        System.out.println(f.getAbsolutePath());//F:3Java-Studymy-java-study-0802..c.txt
        System.out.println(f.getCanonicalPath());//F:3Java-Studyc.txt
        System.out.println(f.getParent());//..
        System.out.println(f.getParentFile());//..
    }

    static void createDeleteFile() throws Exception{
        File f = new File("g:/测试/测试a");
        boolean result;
        if(!f.exists()){
            f.mkdir();//false
            f.mkdirs();//true
        }
        File f1 = new File("测试B/b.txt");
        if(!f1.exists()){
            File f2 = f1.getParentFile();
            if(!f2.exists()){
                f2.mkdirs();
            }
            f1.createNewFile();//true
        }
        if(f1.exists()){
            //f1.delete();//只删除了b.txt文件
        }
        File f3 = new File("测试B/c.txt");
        f1.renameTo(f3);//只能在同一个目录下更改,且如果已有文件,则改名失败
    }

    static void commonAttribute() throws Exception{
        File f1 = new File("c.txt");
        f1.createNewFile();
        boolean result = f1.canExecute();//true
        result  = f1.canRead();//true
        result = f1.canWrite();//true
        result = f1.isAbsolute();//false
        result = f1.isDirectory();//false
        result = f1.isHidden();//false
        result = f1.isFile();//true
        f1.lastModified();//1598943309757
        f1.length();//0
    }

    static void iteratorFile() throws Exception{
        File f = new  File("2-App");
        String[] sArray = f.list();
        System.out.println(Arrays.toString(sArray));
        //printPath(f);
        
        File[] fArray = f.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".java");
            }
        });
    }

    static void printPath(File f) throws Exception{
        File[] fArray = f.listFiles();
        if(fArray.length == 0){
            System.out.println(f);
            return;
        }
        for (File f1:
                fArray) {
            if(f1.isDirectory()){
                printPath(f1);
            }
            System.out.println(f1.getCanonicalPath());
        }
    }
}

  

原文地址:https://www.cnblogs.com/gygtech/p/13597184.html