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

File类API的使用

时间:2022-09-03 23:23:39浏览次数:43  
标签:API 文件 String 对象 boolean 文件夹 File 使用

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,使用
From: https://www.cnblogs.com/Jing-com/p/16653934.html

相关文章

  • 使用VMware Workstation创建的虚拟机无法连接网络解决方法
    引言:最近打开虚拟机老是连接不上网络,在网上找这前两个方法试还是一直不行,最后才知道忘记重启DHCPservice和NATservice1、查看虚拟机的设置,确保虚拟机网络连接的方式勾选......
  • spring中@Transactional注解的作用,使用场景举例
    一,spring中管理事务一般使用@Transactional注解,下面对@Transactional使用的各个场景做一个列举,尽可能的将所有场景罗列出来1,场景一,最常见的用法,在方法上使用@Transactio......
  • Java 泛型与通配符 定义与使用
    一、泛型定义:把类型明确的工作推迟到创建对象或调用方法时才明确的类型,简而言之,未明确的数据类型。类型:泛型类,泛型方法,方形接口。格式泛型类格式:class类名<E变量......
  • Springboot2.x 使用 nacos 实现配置管理
    参考https://nacos.io/zh-cn/https://blog.csdn.net/weixin_43871678/article/details/121628460环境环境版本操作windows10JDK11Springboot2.......
  • asio使用例子
    阻塞调用#include<iostream>#include<boost/asio.hpp>#include<boost/date_time/posix_time/posix_time.hpp>usingnamespacestd;intmain(){cout<<......
  • JPA 入门实战(4)--Spring Data JPA 使用
    本文主要介绍SpringBoot中如何使用SpingDataJPA,相关的环境及软件信息如下:SpringBoot2.6.10。1、SpingDataJPA简介SpringDataJPA是SpringData家族的一部......
  • 使用STM32控制TMC5160驱动步进电机
      首先先来了解一下TMC5160的3种工作模式TMC5160通过两个引脚来控制它的工作模式:SD_MODE和SPI_MODE。1、当SD_MODE接地,SPI_MODE拉高,TMC5160即工作在模式1(SPI......
  • spark 日常使用问题集合
    1.spark广播加入错误,即使spark.sql.autoBroadcastJoinThreshold=-1任务设置spark.sql.autoBroadcastJoinThreshold=-1 但是在实际执行中设置未生效 即使我把它指定为......
  • JavaScript 非运算(!)之双感叹号的使用技巧
    我的另一篇博文中提到JavaScript有哪些是假值,哪些是真值。对于null、undefined、"",等一些假值,JavaScript直接视为false。我有一个需求,判断从浏览器中获取的Cookie是......
  • C#_LOG的使用,工具类
    1、NLog导包包名:NLog.Extensions.Logging配置文件创建配置文件,使用默认名字nlog.config,会减少很多不必要的麻烦<?xmlversion="1.0"encoding="utf-8"?><nlogx......