Java的File类:既可以当作目录/文件夹,也可以当作文件
说明用例: D:\\JAVA\\mybatis-generator\\serializable\\a.java(绝对路径'\',多加一个'\'代表转义),下面写法也一样,相对路径
文件 : File file = new File("D:/JAVA/mybatis-generator/serializable/a.log");
目录/文件夹 : File dir = new File("D:/JAVA/mybatis-generator/serializable");
1. 访问文件名相关的方法
①String getName() :返回此File对象所表示的文件名或路径名(如果时路径,返回最后一级子路径名)
文件: a.java
文件夹: serializable
②String getPath() : 返回此File对象所对应的路径名
文件: D:\JAVA\mybatis-generator\serializable\a.java
③File getAbsoluteFile() : 返回此File对象的绝对路径
文件: D:\JAVA\mybatis-generator\serializable\a.java
④String getAbsolutePath() : 返回此File对象的绝对路径名
文件: D:\JAVA\mybatis-generator\serializable\a.java
⑤String getParent() : 返回此File对象所对应目录 (最后一级子目录) 的父目录名
文件: D:\JAVA\mybatis-generator\serializable\a.java
⑥boolean renameTo(File newName) : 重命名此File对象所对应的文件合伙目录,如果重命名成功,返回true,失败返回false
重命名文件 : file.renmaTo( new File("D:\\A.java")); ---> 源文件的原有名字和路径都改变
2. 文件检测相关方法
①boolean exists() : 判断File对象所对应的文件或目录是否存在
文件: file.exists() --->true
②boolean canWrite(): 判断File对象所对应的文件或目录是否可写
文件: file.canWrite() --->true
③boolean canRead() : 判断File对象所对应的文件或目录是否可读
文件: file.canRead() --->true
④boolean isFile() : 判断File对象所对应的是否是文件,而不是目录
文件: file.isFile() --->true
⑤boolean isDirectory() : 判断File对象所对应的是否是目录,而不是文件
文件: file.isDirectory() --->false
⑥boolean isAbsolute() : 判断File对象所对应的文件或目录是否是绝对路径
文件: file.isAbsolute() --->true
3.获取常规文件信息
①long lastModified() : 返回文件的最后修改时间
②long length() : 返回文件内容的长度
4.文件操作相关的方法
①boolean createNewFile() : 当此File对象所对应的文件不存在时,将会创建一个该File对象所指的的新文件,创建成功返回true,否则返回false
②boolean delete() : 删除File对象所对应的文件或路径
③static File createTempFile(String prefix,String suffix) : 在默认的临时目录/文件夹中创建一个临时的空文件,文件名=prefix + 系统随机数+ suffix
prefix参数的长度>=3字节长,如"hjb","mail",suffix的参数可以为null,在这种情况下,将使用默认的后缀".tmp"
④static File createTempFile(String prefix,String suffix,File directory) : 在directory所指定的目录/文件夹中创建一个临时的空文件,文件名=prefix + 系统随机数+ suffix
5. 目录/文件夹操作相关的方法
①boolean mkdir() : 创建一个File对象所对应的目录/文件夹,创建成功返回true,否值返回false,注意:File对象是一个目录/文件夹,不是文件
②String[] list() : 列出File对象的所有子文件名和目录名,就是当前File对象对应的目录下的所有儿子
③File[ ] listFiles() : 列出File对象的所有子文件名和目录名,返回 File数组
常见面试题: 给定一个目录,1. 打印该目录下所有的子目录/文件夹和文件 2. 找出该目录里的文件名为 user.java的文件
思路: 给定的目录下,很可能会有子文件夹,子文件夹又有子文件夹........所以需要,实现FilenameFilter接口,重写accept()方法 还要依靠递归调用实现
代码:
思路2:使用JDK1.8里的 Files工具类方法walkFileTree( Path start, FileVisitor<? super Path> visitor):遍历start路径下所有的文件和子目录,遍历文件和子目录时都会触发FileVisitor中的相应的方法
代码: