(1)基本概念

Java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或者目录的特征信息,如大小等。

(2)常用方法

方法声明 功能介绍
File(String pathname) 根据参数指定的路径名来构造对象
File(String parent,String child) 根据参数指定的父路径和子路径信息构造对象
File(file parent,String child) 根据参数指定的父抽象路径和子路径信息构造对象
boolean exists() 测试此抽象路径名表示的文件或者目录是否存在
String getName() 用于获取文件的名称
long length() 返回由此抽象路径名表示的文件的长度
long lastModified() 用于获取文件的最后一次修改时间
String getAbsolutePath() 用于获取绝对路径信息
boolean delete() 用于删除文件,当删除目录时要求是空目录
boolean createNewFile() 用于创建新的空文件
boolean mkdir() 用于创建目录
boolean mkdirs() 用于创建多级目录
File[ ] listFiles 获取该目录下的所有内容
boolean isFile() 判断是否为文件
boolean isDirectory() 判断是否为目录
File[ ] listFiles(FileFilter filter) 获取目录下满足筛选器 filter 的所有内容

(3)代码示例 【文件操作】

public class FileTest {public static void main(String[] args) throws IOException {// 1、构造File类型的对象与d:/a.txt关联File f1 = new File("d:/a.txt");// 2、若文件存在则获取该文件的相对特征信息并打印后删除文件if (f1.exists()) {System.out.println("文件的名称是:" + f1.getName());System.out.println("文件的大小是:" + f1.length());System.out.println("文件的最后一次修改时间是:" + f1.lastModified());//绝对路径:主要指以根目录开始的路径,如c:/  d:/ //相对路径:主要是以当前目录所在的位置开始的路径信息,如./    ../相对路径System.out.println("文件的绝对路径信息是" + f1.getAbsolutePath());System.out.println(f1.delete() ? "文件删除成功" : "文件删除失败");} else {// 3、若文件不存在则创建新的空文件System.out.println(f1.createNewFile()?"文件创建成功":"文件创建失败");}}
}

运行结果(一开始,d盘下没有a.txt文件,则首次运行时会创建a.txt文件)

文件创建成功

【此时打开d盘会发现会出现一个名为a.txt的文件,对a.txt进行编辑,手动输入123456;这6个数字,CTRL+C进行内容的保存,然后再次执行这段代码,会显示出对a.txt文件的一些属性信息的相关输出】运行结果如下所示

文件的名称是:a.txt
文件的大小是:6
文件的最后一次修改时间是:1668146689967
文件的绝对路径信息是d:\a.txt
文件删除成功

【这里涉及到最后一次修改时间,因为输出是以毫秒为计量单位,这里我们对时间的输出做一下处理,让它显示我们常见的形式,这里用到了SimpleDateFormat类】代码如下

public class FileTest {public static void main(String[] args) throws IOException {// 1、构造File类型的对象与d:/a.txt关联File f1 = new File("d:/a.txt");// 2、若文件存在则获取该文件的相对特征信息并打印后删除文件if (f1.exists()) {System.out.println("文件的名称是:" + f1.getName());System.out.println("文件的大小是:" + f1.length());Date d1=new Date(f1.lastModified());SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("文件的最后一次修改时间是:" + sdf.format(d1));//绝对路径:主要指以根目录开始的路径,如c:/  d:/ //相对路径:主要是以当前目录所在的位置开始的路径信息,如./    ../相对路径System.out.println("文件的绝对路径信息是" + f1.getAbsolutePath());System.out.println(f1.delete() ? "文件删除成功" : "文件删除失败");} else {// 3、若文件不存在则创建新的空文件System.out.println(f1.createNewFile()?"文件创建成功":"文件创建失败");}}
}

运行效果

文件的名称是:a.txt
文件的大小是:6
文件的最后一次修改时间是:2022-11-11 14:22:26
文件的绝对路径信息是d:\a.txt
文件删除成功

可以发现时间变为文件最后一次被修改的时间啦~

(4)目录操作

4.1单层目录操作

        File f2 = new File("d:/qi");if (f2.exists()) {System.out.println("目录名称是" + f2.getName());System.out.println(f2.delete() ? "目录删除成功" : "目录删除失败");} else {System.out.println(f2.mkdir() ? "目录创建成功" : "目录创建失败");}

运行结束后会在D盘下出现以qi命名的目录啦~


4.2多层目录操作

public class File_Content操作 {public static void main(String[] args) {File f2 = new File("d:/q/q/^_^");if (f2.exists()) {System.out.println("目录名称是" + f2.getName());
//          System.out.println(f2.delete() ? "目录删除成功" : "目录删除失败");} else {//创建单层目录
//          System.out.println(f2.mkdir() ? "目录创建成功" : "目录创建失败");//创建多层目录System.out.println(f2.mkdirs()?"目录创建成功":"目录创建失败");}}
}

运行结果

显示目录创建成功,回到d盘会发现一个层级目录最里面是一个笑脸命名的文件目录^_^

如下图所示:


【我们在创建层级目录时可以直接创建,但在删除目录时,如果是空目录(单层)则直接删除,如果是多层目录只能利用delete方法从最底层递归进行删除啦~~Java官方没有提供一次删除多层目录的方法,原因之一也是为了安全进行考虑,避免误删操作,因为在代码中运行删除时不经过回收站,所以想再恢复会很难,所以如果真的需要层级一次删除多个目录时,只有我们自己再进行编写相关代码,Java官方没有提供这样的方法。】


(5)目录遍历

需求1:将指定目录下的所有内容打印出来【目录结构如下图所示】

代码如下

        //实现将指定目录中的所有内容进行打印出来File f3=new File("d:/q/q/");//获取目录f3下的所有内容并记录到一维数组中File[]firstArray=f3.listFiles();//遍历数组for (File tf:firstArray) {String name=tf.getName();//判断是否是文件,若是则直接打印文件名称if (tf.isFile()) {System.out.println(name);}//若是目录,则使用[ ]将目录名称括起来if (tf.isDirectory()) {System.out.println("["+name+"]");}}

运行效果

a.txt
b.txt
C.avi
[^_^]

需求2:实现目录中所有内容获取的同时进行过滤

两种实现方法:

【接口类型的引用,作为方法的形参是实参的传递方式:

     (1)实现类 【下面代码 1中所示】

     (2)匿名类,java8中可以用lambda表达式【下面代码2所示】
        匿名内部类的语法格式:接口/父类类型 引用变量名=new 接口/父类类型(){方法的重写}】

文件目录如下

代码1如下

        FileFilter fileFilter = new FileFilter() {@Overridepublic boolean accept(File pathname) {//若文件名是以.mp3结尾的,则返回True表示保留,否则返回flase就是表示丢弃return pathname.getName().endsWith(".mp3");}};File[] fileArray2 = f3.listFiles(fileFilter);for (File tf : fileArray2) {System.out.println(tf);}

运行结果 

d:\q\q\李荣浩-年少有为.mp3
d:\q\q\林俊杰-黑夜问白天.mp3

代码2如下【对上述代码中利用Lambda表达式】

File f3 = new File("d:/q/q/");//Lambda表达式格式:(参数列表)->{方法体}FileFilter fileFilter=(File pathname)->{return pathname.getName().endsWith(".mp3");};File[] fileArray2 = f3.listFiles(fileFilter);for (File tf : fileArray2) {System.out.println(tf);}

运行结果

d:\q\q\李荣浩-年少有为.mp3
d:\q\q\林俊杰-黑夜问白天.mp3

此处采用匿名类,涉及到lambda的使用,下面是对Java中的lambda表达式的简单介绍

(1)Lambda表达式概述:Lambda表达式是JDK1.8之后的一种语法,是一个匿名函数,是对匿名函数的简写形式,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),可以写出更简洁、更灵活的代码。

(2)Lambda表达式语法

JDK1.8之后引入的一种语法,他的写法是使用一个->符号,箭头将Lambda表达式分为左右两部分,左边写的是实现的这个接口中的抽象方法中的形参列表,右边就是对抽象方法的处理。

实现的这个接口中的抽象方法中的形参列表 -> 抽象方法的处理

 (3)Lambda表达式注意事项

Lambda表达式不是万能的,他需要函数式接口的支持;

函数式接口;

函数式接口的定义是: 只包含一个抽象方法的接口,称为函数式接口;
其实我们的Lambda表达式就是对函数式接口的一种简写方式,所以只有是函数式接口,我们才能用Lambda表达式;再换句话说,Lambda表达式需要函数式接口的支持,那函数式接口我们可以自己定义,当然JDK1.8也给我们提供了一些现成的函数式接口。


例如自定义的函数式接口:

    @FunctionalInterfacepublic interface MyInterFace<T>{//函数式接口中只能有一个抽象方法void getValue(T t);}//自定义的函数式接口的Lambda 表达式MyInterFace<String>face=(x)->System.out.println(x);

当然了,具体的一些Lambda的简单例子,大家可以去菜鸟上去看一下~链接如下啦~~~

Java Lambda 表达式 | 菜鸟教程 (runoob.com)

File类之文件目录常用操作相关推荐

  1. 编写一个文件目录常用操作的类

    今天对自己以前写的一些常用的组件整理了一下,发现对文件目录的操作的一个类还用的比较多,于是对他进行了修改,一些方法是为在社区中看到有网友提问增加的,包括复制目录的文件和子目录,移动目录文件和子目录,生 ...

  2. Map集合 File类 递归 序列化 常用类 进程线程 死锁

    一.Map集合 将键映射到值得对象,键得值不能重复,一个键可以对应最少一个值. Map接口下的封装好得实现类 –|HashMap –|TreeMap 1.Map接口下的方法 增://将指定得值与该映射 ...

  3. File类对文件的操作应用

    1.在不存在的文件夹下创建文件 //在当前模块下aaa文件下ddd下eee中创建一个e.txt文件 public class Demo2 {public static void main(String ...

  4. 【数据结构Python描述】手动实现一个list列表类并分析常用操作时间复杂度

    文章目录 一.使用动态数组实现列表 1. 动态数组概念引入 2. 验证列表实现策略 3. 动态数组算法实现 二.摊销法分析时间复杂度 1. 摊销法使用示例 2. 数组容量指数增长 3. 数组容量等差增 ...

  5. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  6. java中的IO操作之File类

    Java的集合框架:  类和接口存在于java.util包中. Java的IO:               类和接口存在于java.io包中. 学习方法:  文档在手,天下我有! --------- ...

  7. 【Java】(二十四)File类(文件操作,文件夹操作,FileFilter接口);Properties属性集合

    继续上一章,学习JavaIO框架 [Java](二十三)IO框架:流的概念与分类,字节流(对象流[序列化.反序列化]),编码方式,字符流(打印流,转换流) 上一节的学习(字节流,字符流)都是对文件内容 ...

  8. Java的File类

    File类的理解 常用构造器 常用方法 代码示例 练习 File类的理解 1.File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) 2.File类声明在java.io中 3.File类中涉 ...

  9. File类(Java)

    目录 1.File类定义 2.File类构造方法(常用摘要) 3.练习 4.主要成员方法 1.File类定义 1)File类主要是JAVA为文件这块的操作(如删除.新增等)而设计的相关类. 2)Fil ...

最新文章

  1. 使用Chrome浏览器和FF浏览器查看ajax发送以及从服务器传回的数据
  2. gatdata获取曲线_GetData软件使用--获取曲线图中的数据
  3. python中math isnan,在python中指定一个变量NaN,不用numpy
  4. boost::mp11::mp_max相关用法的测试程序
  5. idea中开启Run Dashboard
  6. 将Java 8流解析为SQL
  7. 码上用它开始Flutter混合开发——FlutterBoost
  8. flask ajax 文件上传,python flask使用ajax请求上载文件。文件为空
  9. 数据 3 分钟 | 阿里云国内市场份额高达40.3%;openGauss、GoldenDB、星环发布数据库最新版本...
  10. pom.xml mvn package expected START_TAG or END_TAG not TEXT
  11. Vulkan教程 - 18 阶段性总结
  12. pocib模板流程图_各单据流程POCIB
  13. Boss直聘使用技巧 – 求职面试 – 被面技巧
  14. 爬取github上热门项目并绘制图表
  15. 樱花的季节,教大家用canvas画出飞舞的樱花树
  16. KOOK使用过程有杂音如何解决
  17. Pandas详解十之Dropna滤除缺失数据
  18. jrebel 反代理服务搭建
  19. 系统学习iOS动画 —— 渐变动画
  20. 基于jsp的旅游信息网站的设计

热门文章

  1. android修改输出分辨率,编译Android8.1修改默认分辨率和屏幕密度
  2. C语言链表超简单教程
  3. java实现下载并选择保存路径
  4. PHPEXCEL 识别公式问题的问题 和解决方案
  5. 牛奶食疗可治多种疾病(图)
  6. Kanzi制作的应用能在鸿蒙系统中运行吗?
  7. 土木工程结构力学————虚功原理
  8. nginx(二)---Nginx 日志Log
  9. 打造全域智慧教育,智领云BDOS深度助力浙江省教育教学创新发展
  10. sql查询表中的索引