【愚公系列】2022年01月 Java教学课程 52-File文件操作
文章目录
- 一、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文件操作相关推荐
- 【愚公系列】2022年01月 Java教学课程 73-反射
文章目录 一.反射 1.反射的概述 2.获取Class类对象的三种方式 3.反射获取构造方法并使用 1.Class类获取构造方法对象的方法 2.Constructor类用于创建对象的方法 3.小结 4 ...
- 【愚公系列】2022年01月 Java教学课程 80-软件开发介绍
文章目录 前言 一.JavaWeb开发 1.JavaEE规范 2.Web概述 3.系统结构 3.1系统结构简介 3.2 C/S结构 3.3 B/S结构 3.4 两种结构的区别及优略 前言 软件开发是根 ...
- 【愚公系列】2022年01月 Java教学课程 78-单元测试
文章目录 前言 一.单元测试 1.概述 2.特点 3.使用步骤 4.相关注解 总结 前言 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一 ...
- 【愚公系列】2022年01月 Java教学课程 71-自建HTTP服务器解析浏览器请求案例
文章目录 一.自建HTTP服务器解析浏览器请求案例 1.环境搭建 2.获取请求信息并解析 3.给浏览器响应数据 4.代码优化 一.自建HTTP服务器解析浏览器请求案例 1.环境搭建 实现步骤 编写Ht ...
- 【愚公系列】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 ...
- 【愚公系列】2022年01月 Java教学课程 46-获取对象操作类Optional
文章目录 一.Optional 1.获取对象 2.常用方法 3.处理空指针的方法 一.Optional 1.获取对象 Optional概述 可能包含或不包含非null值的容器对象 方法介绍 方法名 说 ...
- 【愚公系列】2022年01月 Java教学课程 81-Tomcat介绍和基本使用
文章目录 一. Tomcat介绍 1. 关于服务器 2. Tomcat下载与安装 2.1Tomcat各版本所需支持 2.2 Tomcat目录结构详解 二.Tomcat基本使用 1. Tomcat启动和 ...
- 【愚公系列】2023年01月 Java教学课程 030-static关键字
文章目录 一.static关键字 1.static关键字概述 (理解) 2.static修饰的特点 (记忆) 3.static关键字注意事项 (理解) 二.static关键字内存分析 总结 一.sta ...
- 【愚公系列】2023年01月 Java教学课程 016-break和continue
文章目录 一.break和continue 总结 break: continue: 一.break和continue 跳转控制语句(break) 跳出循环,结束循环 跳转控制语句(continue) ...
最新文章
- Ajax与JSON的一些总结(转)
- docker 镜像重命名_Docker 镜像该怎么传
- 刑啊!智能音箱让10岁女童摸电门,内容来自网络却不审核,这锅该谁来背?...
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
- 继承 抽象 接口 多态
- windows10下安装JDK及环境变量设置
- 将本地 jar 安装到本地 maven 仓库
- 文件和目录(一)--unix环境高级编程
- mysql 分表 存储过程,通用分表存储过程
- 计算机控制鼠标,键盘控制鼠标,详细教您如何使用键盘来控制鼠标
- 4.15反思 值得长时间思考的一天
- win10计算机无动作后锁屏,怎么让win10不锁屏_让win10不锁屏的操作方法
- 学GIS的你,是时候自己做张中国地图了(附行政区划数据下载)
- AssertionError: 1 columns passed, passed data had 5 columns错误解决
- vs2017设置背景图片
- Vue创建app及App挂载和渲染
- pytorch快速上手(10)-----netron查看神经网络结构图
- 两会话文明 | 文明的行为,也是最美的风景
- 数据库到底如何理解呢
- 一闪之间_李孟_新浪博客