java中删除文件/文件夹的3种方法示例小结

 更新时间:2023年10月10日 11:41:37   作者:程序修理员  
这篇文章主要介绍了java中删除文件/文件夹的3种方法示例小结,第一种是通过io删除文件,第二种是通过Files.walk删除文件,第三种是通过 Files.walkFileTree删除文件,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧

java中删除文件/文件夹的3种方法

1、通过io删除文件

    /**
     * 通过递归逐层删除文件信息
     *
     * @param filePath
     */
    public static void deleteFileByIO(String filePath) {
        File file = new File(filePath);
        File[] list = file.listFiles();
        if (list != null) {
            for (File temp : list) {
                deleteFileByIO(temp.getAbsolutePath());
            }
        }
        file.delete();
    }

2、通过Files.walk删除文件

    /**
     * 使用Files.walk遍历文件夹(包含子文件夹及子其文件),遍历结果是一个Stream
     * 对每一个遍历出来的结果进行处理,调用Files.delete就可以了。
     *
     * @param filePath
     * @throws IOException
     */
    public static void deleteFileByStream(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        try (Stream<Path> walk = Files.walk(path)) {
            walk.sorted(Comparator.reverseOrder())
                    .forEach(FileUtil::deleteDirectoryStream);
            // FileUtil为类名
        }
    }
    private static void deleteDirectoryStream(Path path) {
        try {
            Files.delete(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3、通过 Files.walkFileTree删除文件

 /**
     * 使用walkFileTree方法遍历整个文件目录树,使用FileVisitor处理遍历出来的每一项文件或文件夹
     * FileVisitor的visitFile方法用来处理遍历结果中的“文件”,所以我们可以在这个方法里面删除文件
     * @param filePath
     * @throws IOException
     */
    public static void deleteFileByWalkFileTree(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        Files.walkFileTree(path,
                new SimpleFileVisitor<Path>() {
                    // 先去遍历删除文件
                    @Override
                    public FileVisitResult visitFile(Path file,
                                                     BasicFileAttributes attrs) throws IOException {
                        Files.delete(file);
                        System.out.printf("文件被删除 : %s%n", file);
                        return FileVisitResult.CONTINUE;
                    }
                    // 再去遍历删除目录
                    @Override
                    public FileVisitResult postVisitDirectory(Path dir,
                                                              IOException exc) throws IOException {
                        Files.delete(dir);
                        System.out.printf("文件夹被删除: %s%n", dir);
                        return FileVisitResult.CONTINUE;
                    }
                }
        );
    }

扩展:

java删除文件或目录的三种方法

一、所用工具

传统删除是利用IO流,本文利用NIO流实现。

二、常见几种方法

1.传统IO流

代码如下(示例):

//调用
 File file = new File("E:/河南省乡镇点/GIS/");
 deleteFile(file);
//删除文件夹及其文件
    public static void deleteFile(File file){
        //获取目录下子文件
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f : files) {
            //打印文件名
            System.out.println("文件名:" + f.getName());
            //文件删除
            f.delete();
        }
        boolean delete = file.delete();
        System.out.println(delete);
    }

2.强制删除(如若一次删除失败,进行多次强制删除即可)

代码如下(示例):

//调用
 File file = new File("E:/河南省乡镇点/GIS/");
 forceDelete(file);
//强制删除
    public static boolean forceDelete(File file) {
        boolean result = file.delete();
        int tryCount = 0;
        while (!result && tryCount++ < 10) {
            System.gc(); //回收资源
            result = file.delete();
        }
        return result;
    }

3.利用NIO流

代码如下(示例):

 Path path= Paths.get("E:\\河南省乡镇点\\GIS");
        Files.walkFileTree(path,new SimpleFileVisitor<>(){
            //遍历删除文件
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                Files.delete(file);
                return FileVisitResult.CONTINUE;
            }
            //遍历删除目录
            public FileVisitResult postVisitDirectory(Path dir,IOException exc) throws IOException{
                Files.delete(dir);
                return FileVisitResult.CONTINUE;
            }
        });

总结

利用NIO流的好处:
1.如果删除失败,可以给出错误的具体原因;
2.代码不多,效率高。

到此这篇关于java中删除文件/文件夹的3种方法的文章就介绍到这了,更多相关java删除文件/文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • json转换成java对象示例

    json转换成java对象示例

    这篇文章主要介绍了json转换成java对象示例,需要的朋友可以参考下
    2014-04-04
  • Java文件操作之按行读取文件和遍历目录的方法

    Java文件操作之按行读取文件和遍历目录的方法

    这篇文章主要介绍了Java文件操作之按行读取文件和递归遍历目录的方法,遍历目录文中分别举了递归和非递归的例子,需要的朋友可以参考下
    2016-03-03
  • springboot集成nacos的配置方法

    springboot集成nacos的配置方法

    这篇文章主要介绍了springboot集成nacos的配置方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • springboot项目防止XSS攻击和sql注入方式

    springboot项目防止XSS攻击和sql注入方式

    这篇文章主要介绍了springboot项目防止XSS攻击和sql注入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中自定义注解介绍与使用场景详解

    Java中自定义注解介绍与使用场景详解

    最近有所了解到自定义注解的应用,因此学习了一下,下面这篇文章主要给大家介绍了关于Java中自定义注解介绍与使用场景的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-09-09
  • 详解前后端分离之Java后端

    详解前后端分离之Java后端

    这篇文章主要介绍了详解前后端分离之Java后端,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java中的字符串替换3中实现总结

    Java中的字符串替换3中实现总结

    本文详细介绍了Java中字符串替换方法,包括replace()、replaceFirst()和replaceAll()的的使用方法和语法格式;并通过实例展示了如何使用这些方法进行字符串替
    2026-04-04
  • SpringBoot中实时监控Redis命令流的实现

    SpringBoot中实时监控Redis命令流的实现

    在Redis的日常使用和调试中,监控命令流有助于我们更好地理解 Redis的工作状态,Redis提供了MONITOR命令,可以实时输出Redis中所有客户端的命令请求,本文将介绍如何使用Jedis实现这一功能,并对比telnet实现MONITOR机制的工作方式,需要的朋友可以参考下
    2024-11-11
  • ssm 使用token校验登录的实现

    ssm 使用token校验登录的实现

    这篇文章主要介绍了ssm 使用token校验登录的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详细讲解Java中的main()方法

    详细讲解Java中的main()方法

    在java中main()方法是java应用程序的入口方法,由此可见main方法是很重要的,那么下面这篇文章就给大家详解介绍了Java中的main()方法,需要的朋友可以参考下。
    2016-09-09

最新评论