File

File


文件和目录路径名的抽象表示,一般,file:操作文件,directory:目录/文件夹,path:路径

分隔符

当在不同系统中路径分割符;:和名称分隔符/\是不同的,可以使用File的静态变量来表示以做到系统无关

public static final String pathSeparator;
Windows中为;分号,而linux里则为:冒号。这个在win和linux的环境变量的配置中的路径就能看出

public static final String pathSeparator
Windows中为\,而linux则为/

相对路径和绝对路径

绝对路径:以系统的根路径开始的,Windows中就以盘符开始的
相对路径:Java当前项目的根目录开始的,不是本文件的路径开始的

File的使用

创建File对象

创建File对象,只是把字符串路径封装成File对象,不考虑路径的真假情况,路径可以以文件或文件夹结尾,可以是绝对路径也可以是相对路径,当然路径也可以不实际存在

File(String pathname)                 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(File parent, String child)        从父抽象路径名和子路径名字符串创建新的 File实例。
File(String parent, String child)    从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri)                                   通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

获取File的路径

获取绝对路径,即使创建时传入的是相对路径,最后也是获取到绝对路径。而getPath()则就是获取的传入的路径

public String getAbsolutePath()

获取文件大小

public long length()
返回由此抽象路径名表示的文件的长度。 如果此路径名表示目录,则返回值未指定。
注意文件夹是没有大小的,这里length返回的是文件的大小以字节为单位,如果没有文件就返回0,文件夹也返回0,不是路径的长度

判断文件和文件夹是否存在

exists() 判断文件和文件夹是否存在
isDirectory 判断是否文文件夹/目录
isFile() 判断是否是文件

使用File对象创建文件和文件夹

  • 创建文件

public boolean createNewFile()
public boolean delete()--对应的就是删除文件或文件夹

---当File对象传入的路径(路径在File的构造方法中给出)正确,并且文件不存在时创建文件返回true,如果文件已存在返回false,如果文件路径不存在抛出异常

  • 创建文件夹

public boolean mkdir()
public boolean mkdir()--创建多级文件夹

创建单级文件夹,文件夹存在则不创建返回false,没有文件夹则创建并返回true;如果路径不存在也不会创建并且不会抛出异常并返回false

目录的遍历

public String[] list() --返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
public File[] listFiles()---返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
list()和listFiles()在File的构造方法路径中的路径不存在或者不是一个目录都会返回null空指针异常

文件过滤器

在File对象的String[] list()方法中重载了一个方法:list(FilenameFilter filter),listFiles()也重载了两个方法File[] listFiles(FileFilter filter)和File[] listFiles(FilenameFilter filter)来对文件进行过滤

  • java.io.FileFilter函数接口
    boolean accept(File pathName) 测试指定的抽象路径名是否应包含在路径名列表中。
  • java.io.FilenameFilter函数接口
    boolean accept(File dir,String name) 测试指定的抽象路径名是否应包含在路径名列表中。

两个接口都没有实现类,需要自己定义实现类并重写过滤方法

//这里就是在使用File.listFiles()方法是传入一个过滤器,来过滤文件流,使用lambda表达式
File[] files = dir.listFiles(file -> file.isDirectory() || file.getName().toLowerCase().endsWith(".java"));

本博客为Swagger-Ranger的笔记分享,文章会持续更新
文中源码地址: https://github.com/Swagger-Ranger
欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com

posted on 2019-04-14 22:04  Swagger-Ranger  阅读(178)  评论(0编辑  收藏  举报

导航