【Java SE进阶】Day08 File类、递归
一、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);
}
}
}
}
【Java SE进阶】Day08 File类、递归的更多相关文章
- Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public clas ...
- 【Java SE】Day08 String类、static关键字、Arrays类、Math类
一.String类 1.概述 所有双引号字符串,都是String类的对象 字符串常量,会存在字符串常量池中 2.创建 构造函数--空构造.字符数组.字节(byte ASCII码)数组 3.常用方法-- ...
- day23<File类递归练习>
File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部 ...
- java之io之file类的常用操作
java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...
- Java SE 之 数据库操作工具类(DBUtil)设计
JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...
- Java IO体系之File类浅析
Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作. File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创建 ...
- Java的IO操作---File类
目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...
- 黑马程序员-File类+递归的简单应用
Java File类 Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目 ...
随机推荐
- Mysqldump 的 的 6 大使用场景的导出命令
Mysqldump 选项解析 场景描述 1. 导出 db1.db2 两个数据库的所有数据. mysqldump -uroot -p -P8635 -h192.168.0.199 --hex-blob ...
- 第六章:Django 综合篇 - 9:序列化 serializers
Django的序列化工具让你可以将Django的模型'翻译'成其它格式的数据.通常情况下,这种其它格式的数据是基于文本的,并且用于数据交换\传输过程. 一.序列化数据 Django为我们提供了一个强大 ...
- MySQL 中 datetime 和 timestamp 的区别与选择
MySQL 中常用的两种时间储存类型分别是datetime和 timestamp.如何在它们之间选择是建表时必要的考虑.下面就谈谈他们的区别和怎么选择. 1 区别 1.1 占用空间 类型 占据字节 表 ...
- 谣言检测——(PSA)《Probing Spurious Correlations in Popular Event-Based Rumor Detection Benchmarks》
论文信息 论文标题:Probing Spurious Correlations in Popular Event-Based Rumor Detection Benchmarks论文作者:Jiayin ...
- python实验报告(第五周)
一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...
- H3C交换机配置DHCP服务器
dhcp server ip-pool vlan4020 network 10.3.7.0 mask 255.255.255.0 gateway-list 10.3.7.254 dns-list 20 ...
- P2680 [NOIP2015 提高组] 运输计划 (树上差分-边差分)
P2680 题目的大意就是走完m条路径所需要的最短时间(边权是时间), 其中我们可以把一条边的权值变成0(也就是题目所说的虫洞). 可以考虑二分答案x,找到一条边,使得所有大于x的路径都经过这条边(差 ...
- crondtab定时任务%字符无法识别的处理
一.背景 1.使用crond的定时任务时,编辑了以下的语句,每天0点执行定时任务 crontab -eservice crond restart 0 0 * * * sh /root/backup/c ...
- 洛谷 P5607 [Ynoi2013] 无力回天 NOI2017
人生第一道Ynoi,开心 Description https://www.luogu.com.cn/problem/P5607 Solution 拿到这个题,看了一下,发现询问要求最大异或和,怎么办? ...
- 从源码分析 MGR 的流控机制
Group Replication 是一种 Shared-Nothing 的架构,每个节点都会保留一份数据. 虽然支持多点写入,但实际上系统的吞吐量是由处理能力最弱的那个节点决定的. 如果各个节点的处 ...