首页 > 其他分享 >创建文件夹和删除问价夹的工具类

创建文件夹和删除问价夹的工具类

时间:2023-07-17 15:13:28浏览次数:26  
标签:return String 删除 url File 文件夹 file directory 问价

一、对于文件夹的创建和删除工具类

import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

/**
 * @Description :
 * @Date : 2023/6/3
 * @Author :
 */
@Slf4j
public class FileUtil {
    /**
     * 创建文件夹
     */
    public static void createFold(String path) {
        File f = new File(path);
        f.setWritable(true, false);    //设置写权限,windows下不用此语句
        f.mkdirs();
    }

    /**
     * 获取obs的url的对应的objectKey
     *
     * @param url      例如https://slw-base-video-test.obs.cn-north-4.myhuaweicloud.com/ThirdAlarm/video/email/94446544-a372-4181-b03c-e719a6d5275a.tar
     * @param endPoint 例如obs.cn-north-4.myhuaweicloud.com
     * @return
     */
    public static String getFilePath(String url, String endPoint) {
        if (StrUtil.isBlank(url) || StrUtil.isBlank(endPoint)) {
            return url;
        }
        int i = url.indexOf(endPoint);
        int size = i + endPoint.length();
        String sub = StrUtil.sub(url, size, url.length());
        int i1 = sub.indexOf("/");
        String path = StrUtil.sub(sub, i1 + 1, sub.length());
        return path;
    }


    /**
     * @param url 获取obs返回的url的文件后缀
     *            https://slw-base-video-test.obs.cn-north-4.myhuaweicloud.com/ThirdAlarm/pic/photo/a1c9d9c2bac04e73a41c39b4a08d1a3d.xlsx
     * @return
     */
    public static String getSuffix(String url, String endPoint) {
        String filePath = getFilePath(url, endPoint);
        int i = filePath.lastIndexOf(".");
        String suffix = StrUtil.sub(filePath, i + 1, filePath.length());
        return suffix;
    }

    /**
     * @param url 获取obs返回的url的文件名
     * @return
     */
    public static String getFileName(String url, String endPoint) {
        String filePath = getFilePath(url, endPoint);
        int i = filePath.lastIndexOf("/");
        String fileName = StrUtil.sub(filePath, i + 1, filePath.length());
        return fileName;
    }


    /**
     * 删除单个文件
     *
     * @param fileName
     * @return
     */
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径只有单个文件
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                log.info("删除文件" + fileName + "成功!");
                return true;
            } else {
                log.info("删除文件" + fileName + "失败!");
                return false;
            }
        } else {
            log.info(fileName + "不存在!");
            return false;
        }
    }


    /**
     * 删除目录下所有文件,包括本文件夹
     *
     * @param directory
     * @return
     */
    public static boolean deleteFiles(File directory) {
        boolean flag = true;
        if ((!directory.exists()) || (!directory.isDirectory())) {
            log.info("删除文件夹失败不存在!");
            return false;
        }
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    deleteFiles(file); // 递归删除子目录中的文件
                } else {
                    try {
                        Path path = file.toPath();
                        Files.delete(path); // 删除文件
                        log.info("Deleted: " + file.getAbsolutePath());
                    } catch (IOException e) {
                        log.error("Error deleting file: " + file.getAbsolutePath() + " - " + e.getMessage());
                        flag = false;
                    }
                }
            }
        }
        try {
            Files.delete(directory.toPath()); // 删除目录
            log.info("Deleted directory: " + directory.getAbsolutePath());
        } catch (IOException e) {
            log.error("Error deleting directory: " + directory.getAbsolutePath() + " - " + e.getMessage());
            flag = false;
        }

        return flag;
    }

    /**
     * 删除目录下所有文件,不删除本文件夹
     *
     * @param filepath
     * @return
     */
    public static boolean deleteAllFile(String filepath) {
        boolean flag = false;
        File file = new File(filepath);
        if (!file.exists() || !file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (filepath.endsWith(File.separator)) {
                temp = new File(filepath + tempList[i]);
            } else {
                temp = new File(filepath + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();
            }
            if (temp.isDirectory()) {
                deleteAllFile(temp.getPath());  // 先删除文件夹里面的文件
                temp.delete();  // 再删除空文件夹
                flag = true;
            }
        }
        return flag;
    }

}

标签:return,String,删除,url,File,文件夹,file,directory,问价
From: https://www.cnblogs.com/cgy1995/p/17560147.html

相关文章

  • IDEA删除模块步骤
     然后在右击delete、删除、如果删除不成功就在夫工程的.idea时找到modules.xml和workspace.xml、删除要删除的模块最后记得重启idea(重要) ......
  • java一个地址映射一个文件夹
    实现Java一个地址映射一个文件夹的方法作为一名经验丰富的开发者,我很高兴能教会你如何实现“Java一个地址映射一个文件夹”的功能。这个功能可以让你在Java应用程序中,通过指定一个地址来映射到一个特定的文件夹,方便你在程序中读写文件。实现流程下面是实现这个功能的流程,我将使......
  • jquery ul 删除指定li
    jQuery删除指定li在Web开发中,经常会用到动态修改和操作HTML元素的需求。而jQuery是一个非常流行的JavaScript库,它提供了简洁易用的API,使得操作DOM元素变得更加容易。本文将介绍如何使用jQuery删除指定的<li>元素。1.引入jQuery库在使用jQuery之前,需要先引入jQuery库文件。可以......
  • redis 删除某个keyvalue 命令
    Redis删除某个键值对的命令Redis是一种高性能的键值对存储数据库,它提供了丰富的命令用于对数据进行操作。其中,删除某个键值对是常见的操作之一。本文将介绍Redis中删除某个键值对的命令,并提供相应的代码示例。DEL命令Redis中删除某个键值对的命令是DEL。它可以用于删除单个键值......
  • 用户角色修改&删除
    说明:修改用户的角色1.接口2.实现类干三件事:更新用户表,清除原有的角色,设置新的角色3.来测成功,修改后的权限都能成功回显4.删除接口5.实现类6.来测,删除"丹狼键仙"......
  • MySQL为什么不建议使用delete删除数据?
    这篇文章我会从InnoDB存储空间分布,delete对性能的影响,以及优化建议方面解释为什么不建议delete删除数据。InnoDB存储架构从这张图可以看到,InnoDB存储结构主要包括两部分:逻辑存储结构和物理存储结构。逻辑上是由表空间tablespace—> 段segment或者inode—>区Extent——>......
  • 角色权限修改&删除
    1.说明我们希望在前端对权限进行修改的时候,修改后的数据能够在数据库中进行更新。2.RoleController修改方法名字来创建这个接口3.实现类中实现该方法干三件事:修改角色表、删除原有权限、新增权限4.测试修改成功5.说明我们希望删除角色的时候把对应的表的部......
  • Java性能优化-测试数组和链表在查询和添加删除时性能对比
    场景Java中使用JMH(JavaMicrobenchmarkHarness微基准测试框架)进行性能测试和优化:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131723751上面在使用JMH时测试了Java中数组和链表在进行头部插入时的对比结果。下面分别对比在头部、中部、尾部分别进行查询和......
  • linux文件文件夹操作命令
    1.命令格式command[-options][parameter]command:命令本身-options:命令选项,控制细节parameter:参数,命令的指向目标2.ls命令ls作用:展示当前工作目录下的内容HOME目录:当前用户的专属目录,默认在/home/用户名工作目录:打开终端默认的时用户的HOME目录ls[Linux目......
  • 易优eyoucms商城产品数量删除,默认只能下单一个
    在修改商城的时候,想把选择数量的去掉,不管是加入购物车或是立即购买,能不能默认只能选择一个。  我尝试把下边代码删掉,则不能加入购物车或是立即购买了 解决办法:<divclass="ey-number">改为 <divclass="ey-number"style="display:none;">不需要删除,隐藏即可。......