【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对象代表磁盘中实际存在的文件和目 ...
随机推荐
- 关于使用kuboard安装其自带的监控应用的注意事项
在安装过程中若想监控kube-controller-manager和kube-scheduler,需要按步骤中的如下说明操作 在这里,所有master节点的这俩文件都需要修改,不用apply,等一分钟 ...
- Elasticsearch方案选型必须了解的10件事!
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484372&idx=1&sn=e863e46 ...
- frps服务端与nginx可共用443端口
转载自: https://www.ioiox.com/archives/78.html frps服务器上的nginx frps.ini配置 由于nginx占用80/443端口,frps.ini中的 v ...
- vue3 自定义指令控制按钮权限
经过1个周的摸索和查阅资料,终于搞定VUE3中自定义指令,实现按钮级别的权限控制.当然,只是简单的对按钮进行隐藏和删除的dom操作比较容易,一直纠结的是当按钮无权限时,不是直接删除当前dom元素(bu ...
- Go实现优雅关机与平滑重启
前言 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式.而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出 ...
- 从SVN导出项目出现的乱码问题
解决的方法很简单,只需要将Eclipse的编码标准设置为UTF-8即可 1.Window->Preferences->General->Workspace 面板Text file ...
- 手写自定义springboot-starter,感受框架的魅力和原理
一.前言 Springboot的自动配置原理,面试中经常问到,一直看也记不住,不如手写一个starter,加深一下记忆. 看了之后发现大部分的starter都是这个原理,实践才会记忆深刻. 核心思想: ...
- Linux基础_7_文本显示
注:实质是针对标准输出文本的各种骚操作! 简单查看 注:初略加工后进行显示. cat -n 文件名 #查看文件内容并显示行号 tac 文件名 #逆序查看 more 文件名 less 文件名 #按?搜索 ...
- 记录一次使用git工具拉取coding上代码密码账号错误的经历
1.忘记密码 1.另外的一个位置
- Tensorflow Lite从入门到精通
TensorFlow Lite 是 TensorFlow 在移动和 IoT 等边缘设备端的解决方案,提供了 Java.Python 和 C++ API 库,可以运行在 Android.iOS 和 Ra ...