• java 将文件放到回收站中


    1.情景展示

      如何通过Java代码将文件移到回收站中,而不是直接删除呢?

      将文件删除到回收站,我们还可以撤销,有踪迹追寻;

      不放回收站直接删除,连个反悔的余地都没有,单靠日志能记录个啥。

    2.问题分析

      Java9以下通过jna来完成;

      Java9及以上通过自带Java类Desktop.class来完成; 

    3.解决方案

      方式一:

      所需jar包

    <dependency>
        <groupId>net.java.dev.jna</groupId>
        <artifactId>jna-platform</artifactId>
        <version>4.0.0</version>
    </dependency>
    

      代码实现

    /*
     * 将文件放到回收站
     * @attention: 不管路径有没有路径分隔符,都将视作没有处理,例如:
     * C:UsersMarydonDesktop名字
     * C:UsersMarydonDesktop名字
     * 删除的都将是名字这整个文件夹
     * @date: 2021-06-07 18:21
     * @param: filePath 文件绝对路径
     * @return: boolean 成功/失败
     */
    public static boolean moveFileToTrash(String filePath) {
        
        if (filePath == null || filePath.isEmpty()) {
            log.info("filePath shouldn't be null (or) empty");
            return true;
        }
    
        File file = new File(filePath);
        if (!file.exists()) {
            log.info("File is not exist, seems to be it is already deleted");
            return true;
        }
    
        com.sun.jna.platform.FileUtils fileUtils = com.sun.jna.platform.FileUtils.getInstance();
    
        // 检测当前系统没有回收站的话,进行提醒
        if (!fileUtils.hasTrash()) {
            log.error("No Trash available");
            return false;
        }
    
        // 有回收站就会将文件放到回收站中
        try {
            fileUtils.moveToTrash(new File[] { new File(filePath) });
            log.info("文件/文件夹已被放入回收站");
            return true;
        } catch (IOException e) {
            log.error("Error while moving the file to trash " + e.getMessage());
            return false;
        }
    
    }

      方式二:

    Desktop.getDesktop().moveToTrash(file);
    

      这个由于我用的是Java8,所以没有测试;

      这个可能不支持批量删除,如果不支持的话,就搞个文件数组File[]循环调用;

      如果有大佬测试过,可以批量删除的话,封装成像上面的那种,欢迎在评论区留下代码,供他人使用哦。  

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    python3编写网络爬虫18-代理池的维护
    python3编写网络爬虫17-验证码识别
    python3编写网络爬虫16-使用selenium 爬取淘宝商品信息
    python3编写网络爬虫15-Splash的使用
    python3编写网络爬虫14-动态渲染页面爬取
    LeetCode959 由斜杠划分区域(Java并查集)
    编译原理--语法分析之LR分析法的简单实现
    VsCode背景图片设置
    编译原理--基于Lex的词法分析器实验
    HDFS常用的shell命令
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/14860092.html
Copyright © 2020-2023  润新知