一、File类

1、概述java.io.File

  • 文件和路径的抽象表示
  • 用于文件和目录的创建、查找和删除等
  • 分类
    • file--文件
    • directory--文件夹/目录
    • path--路径

2、静态成员变量

  • pathSeparator/pathSeparatorChar:路径分隔符(;)
  • separator/separatorChar:名称分隔符
    • Linux:/
    • Windows:\

3、绝对路径和相对路径

  • 相对:相对于项目的根目录
  • 路径不区分大小写,(Java语言中)双反斜杠表示转义字符

4、构造方法

  • File(File parent, String child)
  • File(String parent, String child)
  • File(String pathname) 
  • File(URI uri) 

5、获取方法

  • getAbsolutePath() :绝对路径
  • getPath():转换为路径字符串
  • getName():返回文件和目录名
  • length():返回文件长度

6、判断方法

  • exists()
  • isDirectory():目录
  • isFile()

7、增删方法

  • createNewFile() :若不存在,则创建
  • delete()
  • mkdir():创建单级目录
  • mkdirs()

8、遍历功能

  • list():返回子文件和目录
  • listFiles():返回带路径的子文件和目录

二、递归

1、概述

  • 直接递归
  • 间接递归
  • 注意:次数不宜过多,否则会产生栈内存溢出

2、打印多级目录

public static void getAllFile(File dir){
//递归打印目录
System.out.println(dir);
File[] files=dir.listFiles();
for (File f:files) {
if(f.isDirectory()){
getAllFile(f);
}
else{
System.out.println(f);
}
}
}

三、综合案例

1、文件搜索:搜索D:\aaa目录中的java文件

    public static void getAllFile(File dir){
//递归打印目录
//不输出目录
// System.out.println(dir);
File[] files=dir.listFiles();
for (File f:files) {
if(f.isDirectory()){
getAllFile(f);
}
else{
//只要.java文件
//使用endwith()
//1.把file对象f转换为字符串对象【f.getName()】
String name = f.getName();//获取文件名称
String path = f.getPath();//比较全的文件路径【绝对路径】
String s = f.toString();
//如果是大写,转换为小写
s.toLowerCase();//字符串转换为小写
//2.调用String类中的方法endsWith()判断是否以.java结尾
boolean b = s.endsWith(".pdf");
//如果为真,则输出
if (b) {
System.out.println(f);
}
//用一行链式编程实现
if(f.getName().toLowerCase().endsWith(".pdf")){
System.out.println("-------------------------------------------");
}
}
}

2、文件过滤器优化

  • listFiles():返回路径中的文件
  • listFiles(FileFilter filter) :返回满足过滤条件(实现类重写accept方法)的文件和目录
  • listFiles(FilenameFilter filter) :类的accept方法有两个参数(路径 +文件名)

3、FileNameFilter过滤器的使用和Lambda优化

public class Demo06FilterBianliFile2 {
public static void main(String[] args) {
File file=new File("E:\\Java");
//打印多级目录
getAllFile(file);
}
public static void getAllFile(File dir){
//递归打印目录
//传递一个过滤器对象
File[] files=dir.listFiles((pathname)-> pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".pdf"));
//使用Lambda表达式优化匿名内部类(函数式接口可以使用)
// File[] files=dir.listFiles((d,name)-> new File(d,name)||name.getName().toLowerCase().endsWith(".pdf"));
for (File f:files) {
if(f.isDirectory()){
getAllFile(f);
}
else{
System.out.println(f);
}
}
}
}

最新文章

  1. When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)
  2. python3.x IDLE学习及基础语法(学习head first python 第一章)
  3. ACM/ICPC 之 四道MST-Kruskal解法-练习题(POJ1251-POJ1287-POJ2031-POJ2421)
  4. Python快速建站系列-Part.Three-注册和登录
  5. PHP一个典型的闭包实例
  6. PostgreSQL Partitions
  7. Spring与Hibernate集成中的Session问题
  8. Eclipse快捷键大全(一)
  9. SQL总结之对比和备份
  10. Android studio 一些技术添加依赖,依赖库
  11. Micropython TurnipBit 电子时钟 青少年编程入门
  12. Linux中jdk安装及配置
  13. 对于ps基本操作的归纳
  14. Tomcat7/8访问Server Status、Manager App、Host Manager出现403 forbidden
  15. MZOJ 1344 工作依赖
  16. js-ES6学习笔记-变量的解构赋值
  17. hibernate和struts实现分页
  18. 3d md5 demo
  19. mybatis的小问题记录
  20. java 面试随笔

热门文章

  1. Django 之必知必会三板斧
  2. Confluence预览中文附件出现乱码
  3. ProxySQL 定时调度
  4. 谈谈对K8S CNI、CRI和CSI插件的理解
  5. Traefik SRE 之使用 Prometheus 进行监控报警
  6. Beats:如何使用Winlogbeat
  7. 搞透 IOC,Spring IOC 看这篇就够了!
  8. Go_Goroutine详解
  9. CentOS 7.9 安装 ELK
  10. get,post,put,delete四种基础方法对应增删改查