其他分享
首页 > 其他分享> > File类API的使用

File类API的使用

作者:互联网

File类

File类 : 计算机中的文件和文件夹的类  -> File类 计算机中的所有硬盘内容

File类的构造方法

***File(String pathname) : 直接传入目标文件的路径,让File对象指向路径结尾的文件/文件夹
    
File(String parent, String child) 
    
**File(File parent, String child) 
    
        创建File对象做了哪些事情 :
        1. 产生了File对象
        2. 在堆内存中开辟了空间
        3. 如果文件/文件夹不存在不会创建文件/文件夹同时也不会报错
        4. 如果文件/文件夹存在也不会覆盖老文件/老文件夹同时也不会报错

相对路径和绝对路径

相对路径和绝对路径 : 文件/文件夹的路径表示形式

绝对路径 : 
	绝对能找到资源的路径 -> 完整路径
	特点 : 从盘符开头 [只要看到一个路径以盘符开头,那么这个路径一定是绝对路径]
	
	
相对路径 : 
	相对一个起点的简化寻找资源的路径 -> 简单路径的表现       
	最重要的是 参照物 -> 其实就是直接在参照物开始找寻(往内) 这个是相对
	IO板块的参照物 是当前项目的根目录 //当前项目内的资源,可以用相对路径表示
	特点 : 不以盘符开头

File类的创建功能

 boolean createNewFile() : 创建文件 ,只创建文件
 	//如果文件不存在,创建文件; 文件存在不会覆盖源文件
 
 boolean mkdir()  : 创建单级文件夹 , 只能创建文件夹
 boolean mkdirs() : 创建多级文件夹 , 只能创建文件夹   

File类的删除功能(了解)

boolean delete() : 删除File对象指向的文件和文件夹
	注意1 : delete 方法删除是不走回收站的
	注意2 : delete 删除文件夹只是删除文件夹! 如果文件夹内有内容那么文件夹删除失败

File类的判断功能

*boolean exists() : 判断File对象指向的文件/文件夹 是否存在

*boolean isFile()  :  判断File对象指向的文件/文件夹 是否是文件
*boolean isDirectory() : 判断File对象指向的文件/文件夹 是否是文件夹  

boolean isAbsolute() :  判断File对象指向的文件/文件夹 是否是以绝对路径创建的
boolean isHidden()  : 判断File对象指向的文件/文件夹 是否是隐藏文件/文件夹

File类的获取功能

File getAbsoluteFile()  : 获取File对象指向的文件/文件夹 的 绝对路径的表现形式,以File对象类型返回
String getAbsolutePath()    : 获取File对象指向的文件/文件夹 的 绝对路径的表现形式,以String对象类型返回
  
* String getName()  获取File对象指向的文件/文件夹 的名称

//此方法会把路径结尾的那个文件/文件夹的所有前置路径都作为父路径
String getParent() : 获取File对象指向的文件/文件夹 的 父路径对象 //String类型返回结果 
File getParentFile() : 获取File对象指向的文件/文件夹 的 父路径对象 //File类型返回结果   

String getPath() : 获取创建File对象时,程序员传入的路径

* long length()  : 获取File对象指向的文件的所占字节数(长度) //文件夹没有大小

long lastModified()  : 获取File对象指向的文件/文件夹 的最后修改时间 //时间毫秒值

FIle类的文件夹遍历功能

File[] listFiles()  : 获取File对象指向的文件夹 根目录的所有文件和文件夹
	注意事项 :
		1. listFiles() 只能遍历单级文件夹
		2. listFiles() 不能够去遍历文件 //如果遍历文件 返回null	

带过滤条件的文件夹遍历

File[] listFiles(FileFilter filter)  : 带过滤器的文件夹遍历
	FileFilter : 文件过滤器接口
		抽象方法 : boolean accept(File file) 
            //File file : 遍历时获取到的文件对象
            重写accept方法是在编写过滤条件
            	如果返回true 装进数组中
            	如果返回false 不装进数组中

小案例

/*
    多级文件夹的遍历
    递归 : 方法调用方法自己
    递归 :
        1. 一定要定义方法
        2. 定义的方法一定写形参 -> (每一次递归传递进来的实参要发生改变)
        3. 每一次递归实参的变化要往出口方向前进
        4. 递归有出口
        5. 找规律
    出口 :   如果是文件
    参数变化 : 再次调用方法时传入的是子文件夹
 */
public static void main(String[] args) {
        //创建根目录
        File root = new File("C:\\Users\\WH-HKB\\Desktop\\IdeaProjects");

        getFileName(root);//第一次调用 : 根目录
    }

    public static void getFileName(File file){//第一次调用 : 根目录  接下来的调用 根目录下的子文件/子文件夹
        //先写出口
        if (file.isFile()){
            System.out.println("\t文件有 : " + file.getName());
            return;
        }
        //再写规律
        //如果能从上方判断下来,说明file对象指向的 一定是一个文件夹

        System.out.println("文件夹有 : " + file.getName());

        //过滤时只要.java文件
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".java") || pathname.isDirectory();
            }
        });
        for (File ziFile : files) {
            //不管ziFile是文件还是文件夹
            getFileName(ziFile);//后续调用 : 子目录
        }
    }

标签:API,文件,String,对象,boolean,文件夹,File,使用
来源: https://www.cnblogs.com/Jing-com/p/16653934.html