java案例25:批量操作文件管理器

news2024/9/30 21:55:30

思路:

编写文件管理器,实现文件的批量操作。

具体功能:
1.用户输入指令1,代表“指定关键字检索文件”,
此时需要用户输入检索的目录和关键字,
系统在用户指定的目录下检索出文件名中包含关键字的文件
并将其绝对路径展示出来

2.用户输入指令2,代表“指定后缀名检索文件”,
此时需要用户输入检索的目录和后缀名(多个后缀名用逗号分隔),
系统在用户指定的目录下检索出指定后缀名的文件,
并将其绝对路径展示出来。

3.用户输入指令4,代表“删除文件/目录”,
此时需要用户输入需要删掉的文件目录,
程序执行后会将目录以及目录下的内容全部删除。

4.用户输入5,代表“退出”,即退出系统。

代码:

代码结构:

FileUtils类:

package base.base025;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;

public class FileUtils {
    public static ArrayList<String> listFiles(File file,String key){
        //创建文件名称过滤器对象
        FilenameFilter filter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {

                //把dir和name封装成一个File对象
                File currFile = new File(dir,name);

                //判断currFile是否是一个文件,并且文件的名称包含key
                if(currFile.isFile() && name.contains(key)){
                    return true;
                }
                return false;
            }
        };

        //获取满足条件的所有文件
        //调用fileDir方法
        ArrayList<String> arrayList = fileDir(file,filter);
        return arrayList;

    }

    //递归算法
    public static ArrayList<String> fileDir(File dir,FilenameFilter filter){
        //创建集合对象存储执行后的结果
        ArrayList<String> arrayList = new ArrayList<>();
        //获取file对象下面的所有文件以及文件夹对应的file数组,把文件名称过滤器传递过去
        File[] lists = dir.listFiles(filter);
        for(File list : lists){
            //获取文件的绝对路径,将其存储到ArrayList集合中
            arrayList.add(list.getAbsolutePath());
        }

        //获取当前目录下所有文件的数组
        File[] files = dir.listFiles();
        for(File file:files){
            if(file.isDirectory()){
                ArrayList<String> every = fileDir(file,filter);
                arrayList.addAll(every);
            }
        }
        //返回
        return arrayList;

    }


}

测试类:

package base.base025;

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

/*
批量操作文件管理器

编写文件管理器,实现文件的批量操作。

具体功能:
1.用户输入指令1,代表“指定关键字检索文件”,
此时需要用户输入检索的目录和关键字,
系统在用户指定的目录下检索出文件名中包含关键字的文件
并将其绝对路径展示出来

2.用户输入指令2,代表“指定后缀名检索文件”,
此时需要用户输入检索的目录和后缀名(多个后缀名用逗号分隔),
系统在用户指定的目录下检索出指定后缀名的文件,
并将其绝对路径展示出来。

3.用户输入指令4,代表“删除文件/目录”,
此时需要用户输入需要删掉的文件目录,
程序执行后会将目录以及目录下的内容全部删除。

4.用户输入5,代表“退出”,即退出系统。

 */
public class Test25 {
    public static void main(String[] args) {
        //输出用户操作
        System.out.println("1.指定关键字检索文件");
        System.out.println("2.指定后缀名检索文件");
        System.out.println("3.删除文件/目录");
        System.out.println("4.退出系统");

        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请输入指令:");
            int command = sc.nextInt();

            switch (command) {
                case 1:
                    //指定关键字检索文件
                    searchByKeyWord();
                    break;
                case 2:
                    //指定后缀名检索文件
                    searchBySufferfix();
                    break;
                case 3:
                    //删除文件/目录
                    break;
                case 4:
                    //退出系统
                    exit();
                    break;
                default:
                    System.out.println("您输入的指令有误!请重新输入。");
                    break;
            }
        }


    }

    //指定后缀名进行检索
    private static void searchBySufferfix() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要检索的目录位置:");
        String path = sc.next();

    }

    //退出系统
    private static void exit() {
        System.out.println("您已退出系统,谢谢使用。");
        System.exit(0);
    }

    //指定关键字搜索文件
    private static void searchByKeyWord() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要检索的目录位置:");
        String path = sc.next();
        File file = new File(path);//封装成一个对象

        //判断这个目录是否存在、是否是目录
        if (!file.exists() || !file.isDirectory()) {
            System.out.println(path + "[不是有效目录!]");
            return;
        }

        System.out.println("请输入检索的关键字:");
        String key = sc.next();

        //获取这个目录下所有包含key这个关键字的文件
        ArrayList<String> list = FileUtils.listFiles(file, key);
        for (String P : list) {
            System.out.println(P);
        }

        //退出系统

    }
}

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

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

相关文章

抢先知:公抓抓 信息挖掘工具

随着经济全球化进程的加速&#xff0c;企业在不断发展和壮大&#xff0c;同时也在不断地适应市场的变化。在这个过程中&#xff0c;企业信息的及时获取和掌握变得至关重要。那么&#xff0c;最新企业信息哪里找呢&#xff1f;在这里介绍几个路径&#xff0c;可以参考&#xff0…

蓝桥杯每日一题2023.10.9

题目描述 成绩统计 - 蓝桥云课 (lanqiao.cn) 题目分析 学会使用四舍五入函数round #include<bits/stdc.h> using namespace std; int s1, s2; int main() {int n, x;cin >> n;for(int i 1; i < n; i ){cin >> x; if(x > 60)s1 ;if(x > 85)s2 ;…

GD32F103 硬件SPI通信

1. SPI的通信原理 SPI既可以做主机也可以做从机。 当做主机时。MOSI&#xff0c;SCK,CS都是作为输出。 而作为从机时。MOSI&#xff0c;SCK,CS都是作为输入。 所以SPI的硬件电路应该实现这样的功能。 2. GD32/STM32的SPI框图 1. GD32框图 如下图做主机的数据流向&#xf…

华为HCIP安全 VPN学习笔记 密码学基础:基本框架介绍

0.学习密码学的目的与方法 作为一个工程师&#xff0c;你不需要像科学家一样掌握密码学的整个开发过程。 为了保障安全性&#xff0c;密码学发展出不同的模块&#xff0c;解决了不同的问题&#xff0c;数据的安全性也在这个过程中不断提升。而加密只是其中众多模块之一。其他…

JAVA毕业设计098—基于Java+Springboot的在线教育课程视频(源码+数据库)

基于JavaSpringboot的在线教育课程视频(源码数据库)098 一、系统介绍 本系统分为管理员、教师、用户三种角色(角色菜单可自行分配) 用户功能&#xff1a; 注册、登录、课程搜索、视频观看、课程资料发布、资料浏览、用户中心、我的发布、通知信息、密码修改 教师功能&…

母婴店怎么在微信小程序卖东西

随着互联网的发展&#xff0c;微信小程序已经成为一种新型的电商模式&#xff0c;它无需下载安装&#xff0c;使用方便&#xff0c;不占用手机内存&#xff0c;让购物变得更加简单便捷。母婴店也可以通过微信小程序来销售产品&#xff0c;拓宽销售渠道&#xff0c;增加销售额。…

Docker Mysql实战:docker compose 搭建Mysql

1、docker-compose-mysql文件准备 进入/home/docker目录&#xff0c;新建docker-compose-mysql.yml文件&#xff0c;内容如下&#xff1a; version: 3.0 services:mysql:image: "mysql:5.7"container_name: "mysql"environment:MYSQL_ROOT_PASSWORD: &q…

还原回收站的文件需要管理员权限怎么办

案例分享&#xff1a;无意中删除一些文件至回收站&#xff0c;却无法还原&#xff0c;提示“您需要权限来执行此操作”。怎么办&#xff0c;请大侠指点&#xff1f; ——当我们意外地删除了文件并将其放入回收站时&#xff0c;我们通常可以轻松地将其还原。然而&#xff0c;有…

Springboot+vue的企业OA管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的企业OA管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业OA管理系统&#xff0c;采用M&#xff08;m…

如何正确操作封箱机

前文跟大家分享过封箱机错误操作三案例&#xff0c;那么封箱机到底如何才能正确操作呢&#xff1f;今天就和您分享一下如何正确操作封箱机。 1、确定正确的电源电压进行接入。目前国内封箱机均采用220v 50hz电源电压&#xff0c;但也有一些定制型设备可能使用380v电源&#xff…

vue建项目

vue3 create-vue 建vue3项目 vscode里改点东西&#xff0c;首先vetur禁用&#xff0c;这个是vue2的&#xff0c;下volar pinia持久化插件&#xff1a;npm i pinia-plugin-persistedstate 配eslint、prettier 在.eslintrc.cjs里配 rules: {// prettier专注于代码的美观度 (格…

Go 团队发布组织 / 构建 Go module 的官方指南

导读Go 团队发布了一份官方指南&#xff0c;帮助开发者更规范地组织 / 构建 Go module。 刚接触 Go 的开发者常见问题之一是&#xff0c;“就文件和文件夹的组织布局而言&#xff0c;如何组织我的 Go 项目&#xff1f;”。这份指南就是提供建议来帮助回答这个问题。其中包括针对…

2023年中国CEM-1型覆铜板产量、需求量及行业销售收入分析[图]

CEM-1指覆铜板的一种&#xff0c;以玻纤布半固化片与纸基半固化片层压铜箔达到固化后形成的板材&#xff0c;属于复合型基材&#xff0c;CEM-1能用来制作频率特性要求高的PCB&#xff0c;如电视机的调谐器、电源开关、超声波设备、计算机电源和键盘&#xff0c;也可以用于电视机…

解决扬声器异常

之前使用的是PulseAudio PulseAudio 是默认的音频服务器和音频框架&#xff0c;因此大多数应用程序通过 PulseAudio 来处理音频 但也有一些应用程序直接使用 ALSA&#xff08;Advanced Linux Sound Architecture&#xff09;来与音频硬件交互。在这些情况下&#xff0c;ALSA …

[GYCTF2020]Ezsqli 绕过or information_schema 无列名注入

https://www.cnblogs.com/h0cksr/p/16189749.html https://www.gem-love.com/ctf/1782.html 说好的ez.... 我们开始吧 首先就直接进行抓包 看回显 然后开始正常的测试 报错了 这里的 or过滤的绕过 我们可以使用 ^ 或者 || 我喜欢用 || 所以继续构造 发现了 就是目前这种…

JavaScript——数据类型、类型转换

数据类型 计算机世界中的万事万物都是数据。 计算机程序可以处理大量的数据&#xff0c;为什么要给数据分类? 更加充分和高效的利用内存也更加方便程序员的使用数据 基本数据类型 number 数字型 JavaScript中正数、负数、小数等统一称为number JS是弱数据类型&#xff0…

基于SpringBoot的篮球论坛系统

基于SpringBoot的篮球论坛系统~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 登录界面 管理员界面 摘要 基于Spring Boot的篮球论坛系统代表了一个现代社交网络应…

iPhone序列号查询的4个常用方法,赶快get起来!

苹果手机序列号是每台设备的唯一标识符。就像每个人都拥有自己的身份证一样&#xff0c;序列号则是每台苹果手机的身份证明。 通过查询iPhone序列号&#xff0c;我们可以得知手机的产地、生产日期&#xff0c;以及机型等信息&#xff0c;还可以查验手机是否被激活&#xff0c;…

基于Stable Diffusion的图像合成数据集

当前从文本输入生成合成图像的模型不仅能够生成非常逼真的照片&#xff0c;而且还能够处理大量不同的对象。 在论文“评估使用稳定扩散生成的合成图像数据集”中&#xff0c;我们使用“稳定扩散”模型来研究哪些对象和类型表现得如此逼真&#xff0c;以便后续图像分类正确地分配…

华为OD七日集训第7期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第7期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、逻辑分析第2天、字符串处理第3天、数据结构第4天、递归回溯第5天、二分查找第6天、深度优先搜索dfs算法第7天、动态规划 六、集训总结 大家好&a…