文章目录

  • 一、File文件操作
    • 1.File类概述和构造方法
    • 2.绝对路径和相对路径
    • 3.File类创建功能
    • 4.File类删除功能
    • 5.File类判断和获取功能
    • 6.File类练习一
    • 7.File类练习二
    • 8.File类练习三

一、File文件操作

1.File类概述和构造方法

  • File类介绍

    • 它是文件和目录路径名的抽象表示
    • 文件和目录是可以通过File封装成对象的
    • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的
  • File类的构造方法

    方法名 说明
    File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
    File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例
    File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例
  • 示例代码

    public class FileDemo01 {public static void main(String[] args) {//File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例File f1 = new File("E:\\itcast\\java.txt");System.out.println(f1);//File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例File f2 = new File("E:\\itcast","java.txt");System.out.println(f2);//File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的 File实例File f3 = new File("E:\\itcast");File f4 = new File(f3,"java.txt");System.out.println(f4);}
    }
    

2.绝对路径和相对路径

  • 绝对路径

    是一个完整的路径,从盘符开始

  • 相对路径

    是一个简化的路径,相对当前项目下的路径

  • 示例代码

    public class FileDemo02 {public static void main(String[] args) {// 是一个完整的路径,从盘符开始File file1 = new File("D:\\itheima\\a.txt");// 是一个简化的路径,从当前项目根目录开始File file2 = new File("a.txt");File file3 = new File("模块名\\a.txt");}
    }
    

3.File类创建功能

  • 方法分类

    方法名 说明
    public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
    public boolean mkdir() 创建由此抽象路径名命名的目录
    public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录
  • 示例代码

    public class FileDemo02 {public static void main(String[] args) throws IOException {//需求1:我要在E:\\itcast目录下创建一个文件java.txtFile f1 = new File("E:\\itcast\\java.txt");System.out.println(f1.createNewFile());System.out.println("--------");//需求2:我要在E:\\itcast目录下创建一个目录JavaSEFile f2 = new File("E:\\itcast\\JavaSE");System.out.println(f2.mkdir());System.out.println("--------");//需求3:我要在E:\\itcast目录下创建一个多级目录JavaWEB\\HTMLFile f3 = new File("E:\\itcast\\JavaWEB\\HTML");
    //        System.out.println(f3.mkdir());System.out.println(f3.mkdirs());System.out.println("--------");//需求4:我要在E:\\itcast目录下创建一个文件javase.txtFile f4 = new File("E:\\itcast\\javase.txt");
    //        System.out.println(f4.mkdir());System.out.println(f4.createNewFile());}
    }
    

4.File类删除功能

  • 方法分类

    方法名 说明
    public boolean delete() 删除由此抽象路径名表示的文件或目录
  • 示例代码

    public class FileDemo03 {public static void main(String[] args) throws IOException {//        File f1 = new File("E:\\itcast\\java.txt");//需求1:在当前模块目录下创建java.txt文件File f1 = new File("myFile\\java.txt");
    //        System.out.println(f1.createNewFile());//需求2:删除当前模块目录下的java.txt文件System.out.println(f1.delete());System.out.println("--------");//需求3:在当前模块目录下创建itcast目录File f2 = new File("myFile\\itcast");
    //        System.out.println(f2.mkdir());//需求4:删除当前模块目录下的itcast目录System.out.println(f2.delete());System.out.println("--------");//需求5:在当前模块下创建一个目录itcast,然后在该目录下创建一个文件java.txtFile f3 = new File("myFile\\itcast");
    //        System.out.println(f3.mkdir());File f4 = new File("myFile\\itcast\\java.txt");
    //        System.out.println(f4.createNewFile());//需求6:删除当前模块下的目录itcastSystem.out.println(f4.delete());System.out.println(f3.delete());}
    }
    

5.File类判断和获取功能

  • 判断功能

    方法名 说明
    public boolean isDirectory() 测试此抽象路径名表示的File是否为目录
    public boolean isFile() 测试此抽象路径名表示的File是否为文件
    public boolean exists() 测试此抽象路径名表示的File是否存在
  • 获取功能

    方法名 说明
    public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
    public String getPath() 将此抽象路径名转换为路径名字符串
    public String getName() 返回由此抽象路径名表示的文件或目录的名称
    public File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组
  • 示例代码

    public class FileDemo04 {public static void main(String[] args) {//创建一个File对象File f = new File("myFile\\java.txt");//        public boolean isDirectory():测试此抽象路径名表示的File是否为目录
    //        public boolean isFile():测试此抽象路径名表示的File是否为文件
    //        public boolean exists():测试此抽象路径名表示的File是否存在System.out.println(f.isDirectory());System.out.println(f.isFile());System.out.println(f.exists());//        public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
    //        public String getPath():将此抽象路径名转换为路径名字符串
    //        public String getName():返回由此抽象路径名表示的文件或目录的名称System.out.println(f.getAbsolutePath());System.out.println(f.getPath());System.out.println(f.getName());System.out.println("--------");//        public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组File f2 = new File("E:\\itcast");File[] fileArray = f2.listFiles();for(File file : fileArray) {//            System.out.println(file);
    //            System.out.println(file.getName());if(file.isFile()) {System.out.println(file.getName());}}}
    }
    

6.File类练习一

  • 案例需求

    在当前模块下的aaa文件夹中创建一个a.txt文件

  • 实现步骤

    • 创建File对象,指向aaa文件夹
    • 判断aaa文件夹是否存在,如果不存在则创建
    • 创建File对象,指向aaa文件夹下的a.txt文件
    • 创建这个文件
  • 代码实现

    public class Test1 {public static void main(String[] args) throws IOException {//练习一:在当前模块下的aaa文件夹中创建一个a.txt文件/* File file = new File("filemodule\\aaa\\a.txt");file.createNewFile();*///注意点:文件所在的文件夹必须要存在.//1.创建File对象,指向aaa文件夹File file = new File("filemodule\\aaa");//2.判断aaa文件夹是否存在,如果不存在则创建if(!file.exists()){//如果文件夹不存在,就创建出来file.mkdirs();}//3.创建File对象,指向aaa文件夹下的a.txt文件File newFile = new File(file,"a.txt");//4.创建这个文件newFile.createNewFile();}
    }
    

7.File类练习二

  • 案例需求

    删除一个多级文件夹

  • 实现步骤

    • 定义一个方法,接收一个File对象
    • 遍历这个File对象,获取它下边的每个文件和文件夹对象
    • 判断当前遍历到的File对象是文件还是文件夹
    • 如果是文件,直接删除
    • 如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
    • 参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
  • 代码实现

    public class Test2 {public static void main(String[] args) {//练习二:删除一个多级文件夹//delete方法//只能删除文件和空文件夹.//如果现在要删除一个有内容的文件夹?//先删掉这个文件夹里面所有的内容.//最后再删除这个文件夹File src = new File("C:\\Users\\apple\\Desktop\\src");deleteDir(src);}//1.定义一个方法,接收一个File对象private static void deleteDir(File src) {//先删掉这个文件夹里面所有的内容.//递归 方法在方法体中自己调用自己.//注意: 可以解决所有文件夹和递归相结合的题目//2.遍历这个File对象,获取它下边的每个文件和文件夹对象File[] files = src.listFiles();//3.判断当前遍历到的File对象是文件还是文件夹for (File file : files) {//4.如果是文件,直接删除if(file.isFile()){file.delete();}else{//5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象}}//6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹src.delete();}}
    

8.File类练习三

  • 案例需求

    统计一个文件夹中每种文件的个数并打印

    打印格式如下:

            txt:3个doc:4个jpg:6个…
    
  • 实现步骤

    • 定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹
    • 遍历File对象,获取它下边的每一个文件和文件夹对象
    • 判断当前File对象是文件还是文件夹
    • 如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过
      • 没出现过,将这种类型文件的后缀名存入集合中,次数存1
      • 出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中
    • 如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象
  • 代码实现

    public class Test3 {public static void main(String[] args) {//统计一个文件夹中,每种文件出现的次数.//统计 --- 定义一个变量用来统计. ---- 弊端:同时只能统计一种文件//利用map集合进行数据统计,键 --- 文件后缀名  值 ----  次数File file = new File("filemodule");HashMap<String, Integer> hm = new HashMap<>();getCount(hm, file);System.out.println(hm);}//1.定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹private static void getCount(HashMap<String, Integer> hm, File file) {//2.遍历File对象,获取它下边的每一个文件和文件夹对象File[] files = file.listFiles();for (File f : files) {//3.判断当前File对象是文件还是文件夹if(f.isFile()){//如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过String fileName = f.getName();String[] fileNameArr = fileName.split("\\.");if(fileNameArr.length == 2){String fileEndName = fileNameArr[1];if(hm.containsKey(fileEndName)){//出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中Integer count = hm.get(fileEndName);//这种文件又出现了一次.count++;//把已经出现的次数给覆盖掉.hm.put(fileEndName,count);}else{// 没出现过,将这种类型文件的后缀名存入集合中,次数存1hm.put(fileEndName,1);}}}else{//如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象代码实现getCount(hm,f);}}}}
    

【愚公系列】2022年01月 Java教学课程 52-File文件操作相关推荐

  1. 【愚公系列】2022年01月 Java教学课程 73-反射

    文章目录 一.反射 1.反射的概述 2.获取Class类对象的三种方式 3.反射获取构造方法并使用 1.Class类获取构造方法对象的方法 2.Constructor类用于创建对象的方法 3.小结 4 ...

  2. 【愚公系列】2022年01月 Java教学课程 80-软件开发介绍

    文章目录 前言 一.JavaWeb开发 1.JavaEE规范 2.Web概述 3.系统结构 3.1系统结构简介 3.2 C/S结构 3.3 B/S结构 3.4 两种结构的区别及优略 前言 软件开发是根 ...

  3. 【愚公系列】2022年01月 Java教学课程 78-单元测试

    文章目录 前言 一.单元测试 1.概述 2.特点 3.使用步骤 4.相关注解 总结 前言 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一 ...

  4. 【愚公系列】2022年01月 Java教学课程 71-自建HTTP服务器解析浏览器请求案例

    文章目录 一.自建HTTP服务器解析浏览器请求案例 1.环境搭建 2.获取请求信息并解析 3.给浏览器响应数据 4.代码优化 一.自建HTTP服务器解析浏览器请求案例 1.环境搭建 实现步骤 编写Ht ...

  5. 【愚公系列】2022年01月 Java教学课程 84-HTTP协议

    文章目录 一.HTTP协议 1. HTTP协议概述 1.1 HTTP协议概念 1.2 HTTP协议版本 1.3 HTTP协议相关说明 2. HTTP协议组成 2.1请求部分 2.2 响应部分 2.3 ...

  6. 【愚公系列】2022年01月 Java教学课程 46-获取对象操作类Optional

    文章目录 一.Optional 1.获取对象 2.常用方法 3.处理空指针的方法 一.Optional 1.获取对象 Optional概述 可能包含或不包含非null值的容器对象 方法介绍 方法名 说 ...

  7. 【愚公系列】2022年01月 Java教学课程 81-Tomcat介绍和基本使用

    文章目录 一. Tomcat介绍 1. 关于服务器 2. Tomcat下载与安装 2.1Tomcat各版本所需支持 2.2 Tomcat目录结构详解 二.Tomcat基本使用 1. Tomcat启动和 ...

  8. 【愚公系列】2023年01月 Java教学课程 030-static关键字

    文章目录 一.static关键字 1.static关键字概述 (理解) 2.static修饰的特点 (记忆) 3.static关键字注意事项 (理解) 二.static关键字内存分析 总结 一.sta ...

  9. 【愚公系列】2023年01月 Java教学课程 016-break和continue

    文章目录 一.break和continue 总结 break: continue: 一.break和continue 跳转控制语句(break) 跳出循环,结束循环 跳转控制语句(continue) ...

最新文章

  1. Ajax与JSON的一些总结(转)
  2. docker 镜像重命名_Docker 镜像该怎么传
  3. 刑啊!智能音箱让10岁女童摸电门,内容来自网络却不审核,这锅该谁来背?...
  4. 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
  5. 继承 抽象 接口 多态
  6. windows10下安装JDK及环境变量设置
  7. 将本地 jar 安装到本地 maven 仓库
  8. 文件和目录(一)--unix环境高级编程
  9. mysql 分表 存储过程,通用分表存储过程
  10. 计算机控制鼠标,键盘控制鼠标,详细教您如何使用键盘来控制鼠标
  11. 4.15反思 值得长时间思考的一天
  12. win10计算机无动作后锁屏,怎么让win10不锁屏_让win10不锁屏的操作方法
  13. 学GIS的你,是时候自己做张中国地图了(附行政区划数据下载)
  14. AssertionError: 1 columns passed, passed data had 5 columns错误解决
  15. vs2017设置背景图片
  16. Vue创建app及App挂载和渲染
  17. pytorch快速上手(10)-----netron查看神经网络结构图
  18. 两会话文明 | 文明的行为,也是最美的风景
  19. 数据库到底如何理解呢
  20. 一闪之间_李孟_新浪博客

热门文章

  1. Spark: Data Skew 优化
  2. Android.mk文件中的内容详解
  3. 阳江python培训
  4. Node-Red-访客、操作员和管理员登录
  5. echarts显示地图以及jQuery地域选择器插件
  6. 多表查询,2021全网最好没有之一
  7. 目标检测算法——YOLOv5/YOLOv7改进之结合Swin Transformer V2(涨点神器)
  8. 四、Eureka注册中心集群配置
  9. 雅克比迭代法的例子matlab,MATLAB样例之雅克比迭代法
  10. 关于慕课第一讲的鸢尾花测试笔记——tensorflow2