Java File类详解(下)练习二

  • 第四题

需求:删除一个多级文件夹

import java.io.File;/*** 删除一个多级目录*/
public class FileDeletion {public static void main(String[] args) {File f = new File("H:\\test\\aaa");deleteDir(f);}public static void deleteDir(File dir){// 进入目录File[] files = dir.listFiles();if (files != null) {for (File file : files) {// 如果是文件,则删除if (file.isFile()){file.delete();}else {// 如果是文件夹,则递归deleteDir(file);}}// 最后,删除目录本身dir.delete();}}
}

  • 第五题

需求:统计一个文件夹中每种文件的个数并打印。  (考虑子文件夹)

①打印格式如下:

②txt:3个

③doc:4个

④jpg:6个

先导题:需求:统计一个文件夹的总大小

参考代码如下:

import java.io.File;public class FileLenCount {public static void main(String[] args) {long len = 0;String dir = "G:\\JavaCode\\PuzzleGame";File f = new File(dir);len = countLen(f);System.out.println(len);}/*** 统计文件夹的总大小* @param dir 文件夹* @return 文件加大小(字节)*/public static long countLen(File dir){long len = 0;// 列出目录中所有内容File[] files = dir.listFiles();if (files != null){for (File file : files) {// 1.如果是文件,统计其大小if (file.isFile()){len += file.length();}else {// 2. 如果是文件夹,则递归len += countLen(file);}}}return len;}
}

然后是统计各种文件类型数量的实现,使用Map存储,key为String类型表示文件扩展名,value为Integer类型,表示对应扩展名文件的数量。参考代码如下:

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class FileTypeCount {public static void main(String[] args) {long len = 0;String dir = "G:\\JavaCode\\PuzzleGame";File f = new File(dir);HashMap<String, Integer> hm = countTypeCount(f);System.out.println(hm);}/*** 统计文件夹的总大小* @param dir 文件夹* @return 文件加大小(字节)*/public static long countLen(File dir){long len = 0;// 列出目录中所有内容File[] files = dir.listFiles();if (files != null){for (File file : files) {// 1.如果是文件,统计其大小if (file.isFile()){len += file.length();}else {// 2. 如果是文件夹,则递归len += countLen(file);}}}return len;}/*** 文件夹下文件类型的统计* @param dir 文件夹目录* @return*/public static HashMap<String, Integer> countTypeCount(File dir){HashMap<String, Integer> hm = new HashMap<>();// 列出目录中所有内容File[] files = dir.listFiles();if (files != null){for (File file : files) {// 1.如果是文件,则统计其大小if (file.isFile()){// 获取后缀名。注意点.前面要加双斜线,因为split方法参数是regex正则,// 在正则中点号代码任意一个字符,所以需要转义String[] split = file.getName().split("\\.");if (split.length > 1){String typeName = split[split.length - 1];// 如果后缀名已有统计,则更新if (hm.containsKey(typeName)){hm.put(typeName, hm.get(typeName) + 1);}else {// 如果后缀名没有统计,则添加hm.put(typeName, 1);}}}else {// 2. 如果是文件夹,则递归HashMap<String, Integer> subMap = countTypeCount(file);// 获取子文件夹的统计,更新到hm中Set<Map.Entry<String, Integer>> entries = subMap.entrySet();for (Map.Entry<String, Integer> entry : entries) {// 如果hm中已含文件类型统计,则更新if (hm.containsKey(entry.getKey())){hm.put(entry.getKey(), hm.get(entry.getKey()) + entry.getValue());}// 如果hm中不含文件类型统计,则添加hm.put(entry.getKey(), entry.getValue());}}}}return hm;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法___

文章目录 算法两数之和 算法 两数之和 题目如下图&#xff1a; 我的答案如下图&#xff1a; 我采用的是最笨的思路&#xff0c;直接暴力的两次循环&#xff0c;第一次外循环是取数组的第一个元素&#xff0c;然后内循环会遍历数组后面除第一个的所有元素&#xff0c;然后和…

android studio 提示错误 “Operation is not supported for read-only collection“

Android studio从长颈鹿升级到 新版本小刺猬 &#xff0c;之后 新建项目build 一个小时之后运行&#xff0c;竟然提示如下错误&#xff0c; "Operation is not supported for read-only collection"wtf,尝试过 新建项目&#xff0c;clean项目&#xff0c;重新build …

【前端设计模式】之原型模式

原型模式特性 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它通过克隆现有对象来创建新对象&#xff0c;而不是通过实例化类。原型模式的主要特性包括&#xff1a; 原型对象&#xff1a;原型对象是一个已经存在的对象&#xff0c;它作…

DDD架构思想专栏二《领域层的决策设计思想详解》

如果不了解DDD基本概念的读者可以去看这篇文章&#xff0c;传送门&#xff1a;DDD架构思想专栏一《初识领域驱动设计DDD落地》-CSDN博客 前言介绍 在上一章节介绍了领域驱动设计的基本概念以及按照领域驱动设计的思想进行代码分层&#xff0c;但是仅仅只是从一个简单的分层结…

使用函数验证哥德巴赫猜想

本题要求实现一个判断素数的简单函数&#xff0c;并利用该函数验证哥德巴赫猜想&#xff1a;任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意&#xff1a;1不是素数&#xff0c;2是素数。 函数接口定义&#xff1a; int prime( int…

【Flink系列三】数据流图和任务链计算方式

上文介绍了如何计算并行度和slot的数量&#xff0c;本文介绍Flink代码提交后&#xff0c;如何生成计算的DAG数据流图。 程序和数据流图 所有的Flink程序都是由三部分组成的&#xff1a;Source、Transformation和Sink。Source负责读取数据源&#xff0c;Transformation利用各种…

Remix IDE 快速开始Starknet

文章目录 一、Remix 项目二、基于Web的开发环境Remix 在线 IDE三、Starknet Remix 插件如何使用使用 Remix【重要】通过 Starknet by Example 学习一、Remix 项目 Remix 项目网站 在以太坊合约开发领域,Remix 项目享有很高的声誉,为各个级别的开发人员提供功能丰富的工具集…

JS中深拷贝与浅拷贝

定义 深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;是在编程中常用的两种对象复制方式。 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a; 浅拷贝是创建一个新的对象&#xff0c;将原始对象的属性值复制到新对象中。如果属…

Smart Link和Monitor Link

Smart Link和Monitor Link简介 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#xff0c;它…

[linux] git lfs install 安装lfs

如果报错&#xff0c;需要安装 apt-get sudo apt-get update sudo apt-get install git-lfs --fix-missing [linux] huggingface transformers 如何下载模型至本地 & git lfs install 报错_心心喵的博客-CSDN博客

nodejs流

什么是流 stream 流是用于在 Node.js 中处理流数据的抽象接口。 node:stream 模块提供了用于实现流接口的 API。 什么是流数据 流数据是指一组顺序、大量、快速、连续到达的数据序列&#xff0c;一般情况下数据流可被视为一个随时间延续而无限增长的动态数据集合。流数据应用…

【keil备忘录】2. stm32 keil仿真时的时间测量功能

配置仿真器Trace内核时钟为单片机实际的内核时钟&#xff0c;需要勾选Enable设置&#xff0c;设置完成后Enable取消勾选也可以&#xff0c;经测试时钟频率配置仍然生效&#xff0c;此处设置为48MHZ: 时间测量时必须打开register窗口&#xff0c;否则可能不会计数 右下角有计…

第十四章 : Spring Boot 整合spring-session,使用redis共享

第十四章 &#xff1a; Spring Boot 整合spring-session,使用redis共享 前沿 本文重点讲述&#xff1a;spring boot工程中使用spring-session机制进行安全认证&#xff0c;并且通过redis存储session&#xff0c;满足集群部署、分布式系统的session共享。 基于SPringBoot 2.3.2…

全面指南:常见邮箱客户端连接配置

本文 首发于 Anyeの小站 本教程不局限于 Halo 邮箱配置&#xff0c;同时也适配所有使用邮箱的站点或者邮件客户端配置。 在接下来的内容中&#xff0c;我们将介绍如何配置其他常见的邮箱服务&#xff0c;如 QQ、Gmail、Outlook 等&#xff0c;其他邮箱可以以此类推。无论您使用…

[linux运维] 利用zabbix监控linux高危命令并发送告警(基于Zabbix 6)

之前写过一篇是基于zabbix 5.4的实现文章&#xff0c;但是不太详细&#xff0c;最近已经有两个小伙伴在zabbix 6上操作&#xff0c;发现触发器没有str函数&#xff0c;所以更新一下本文&#xff0c;基于zabbix 6 0x01 来看看效果 高危指令出发问题告警&#xff1a; 发出邮件告…

学好操作系统需要的前置知识

1. 态度&#xff1a;不要等一切都准备好了再前行 如果把一切你可能会说&#xff0c;没有这些基础知识&#xff0c;我每看一篇文章&#xff0c;知识就铺天盖地席卷过来&#xff0c;仿佛每一个知识点都准确地打在了自己的盲点上&#xff0c;这该怎么办呢&#xff1f; 我非常能理…

AI助力智慧农业,基于YOLOv8全系列模型【n/s/m/l/x】开发构建不同参数量级的识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义&#xff0c;在前面的系列博文中&#xff0c;我们从一些现实世界里面的所见所想所感进行了很多对应的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《自建数据集&#xff0c;基于YOLOv7开发构建农田场景下杂草…

学习redis(待完善)

键值对数据库 特征 *键值型 *单线程&#xff08;多线程情况 仅仅在于网络请求&#xff09; *低延迟&#xff0c;速度快&#xff08;基于内存&#xff0c;IO多路复用&#xff0c;&#xff09; *支持持久化 *支持集群&#xff0c;分片 *支持多语言 常见的命令 数据结构&#xff1…

05 JQuery基础入门

文章目录 一、jQuery介绍1. 简介2. 版本介绍3. 相关网站4. HTML引入方式 二、基础语法1. 顶级对象$2. 与DOM对象转化3. 选择器4. 事件5. 动画6. 修改样式7. 修改属性 一、jQuery介绍 1. 简介 jQuery是JavaScript编程语言底层库&#xff0c;它是一个快速&#xff0c;简洁的Jav…

ERPNext SQL 注入漏洞复现

0x01 产品简介 ERPNext 是一套开源的企业资源计划系统。 0x02 漏洞概述 ERPNext 系统frappe.model.db_query.get_list 文件 filters 参数存在 SQL 注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权…