开发者

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

目录
  • Java中删除文件/文件夹的3种方法
    • 1、通过io删除文件
    • 2、通过Files.walk删除文件
    • 3、通过 Files.walkFileTree删除文件
  • java删除文件或目录的三种方法
    • 一、所用工具
    • 二、常见几种方法
      • 1.传统IO流
      • 2.强制删除(如若一次删除失败,进行多次强制删除即可)
      • 3.利用NIO流
  • 总结

    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 FileVishttp://www.devze.comitResult 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 Filewww.devze.comVisitResulhttp://www.devze.comt.CONTINUE;
                }
            });

    总结

    利用NIO流的好处:

    1.如果删除失败,可以给出错误的具体原因;

    2.代码不多,效率高。

    到此这篇关于java中删除文件/文件夹的3种方法的文章就介绍到这了,更多相关java删除文件/文件夹内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜