iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中删除文件或文件夹的方法有哪些
  • 303
分享到

Java中删除文件或文件夹的方法有哪些

2023-07-06 00:07:05 303人浏览 独家记忆
摘要

本篇内容介绍了“Java中删除文件或文件夹的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!删除文件或文件夹的四种基础方法下面的四个

本篇内容介绍了“Java中删除文件或文件夹的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    删除文件或文件夹的四种基础方法

    下面的四个方法都可以删除文件或文件夹。

    它们的共同点是:

    当文件夹中包含子文件的时候都会删除失败,也就是说这四个方法只能删除空文件夹。

    //delete是立即执行删除,而deleteOnExit是程序退出虚拟机时才会删除。

    File类的delete()

    • File类的deleteOnExit():当虚拟机终止时,删除File对象表示的文件或目录,如果表示的是目录,需要保证目录是空的,否则无法删除,无返回值。

    • Files.delete(Path path):删除位于作为参数传递的路径上的文件。对于其他文件系统操作,此方法可能不是原子的。如果文件是符号链接,则将删除符号链接本身而不是链接的最终目标。如果文件是目录,则此方法仅在目录为空时才删除该文件。

    Files.deleteIfExists(Path path)

    需要注意的是:

    传统io中的File类和NIO中的Path类既可以代表文件,也可以代表文件夹。

    上面的四个方法简单对比

    -说明成功的返回值是否能判别文件夹不存在导致失败是否能判别文件夹不为空导致失败
    File类的delete()传统IOtrue不能(返回false)不能(返回false)
    File类的deleteOnExit()传统IO,这是个坑,避免使用void不能,但不存在就不会去执行删除不能(返回void)
    Files.delete(Path path)NIO,推荐使用voidNoSuchFileExceptionDirectoryNotEmptyException
    Files.deleteIfExists(Path path)NIOtruefalseDirectoryNotEmptyException

    File.delete()和Files.delete(Path path)对比

    //删除暂存的pdfFile file =new File(pdfFilename);file.delete();Path path3 = Paths.get(pdfFilename);Files.delete(path3);

    区别:

    --File.delete()Files.delete(Path path)
    jdkJDK1.0JDK1.7
    来源java.io.File对象的实例方法java.nio.file.Files类的静态方法
    参数无参java.nio.file.Path
    返回值booleanvoid
    异常声明无声明声明抛出java.io.IOException
    文件不存在不抛异常,返回false抛java.nio.file.NoSuchFileException
    删除非空目录无法删除,返回false无法删除,抛java.nio.file.DirectoryNotEmptyException
    删除被占用文件无法删除,返回false无法删除,抛java.nio.file.FileSystemException
    其他原因文件无法删除不抛异常,返回false抛java.io.IOException的具体子类

    如何删除整个目录或者目录中的部分文件

    先造数据

    private  void createMoreFiles() throws IOException {   Files.createDirectories(Paths.get("D:\data\test1\test2\test3\test4\test5\"));   Files.write(Paths.get("D:\data\test1\test2\test2.log"), "hello".getBytes());   Files.write(Paths.get("D:\data\test1\test2\test3\test3.log"), "hello".getBytes());}

    walkFileTree与FileVisitor

    使用walkFileTree方法遍历整个文件目录树,使用FileVisitor处理遍历出来的每一项文件或文件夹

    • FileVisitor的visitFile方法用来处理遍历结果中的“文件”,所以我们可以在这个方法里面删除文件

    • FileVisitor的postVisitDirectory方法,注意方法中的“post”表示“后去做……”的意思,所以用来文件都处理完成之后再去处理文件夹,所以使用这个方法删除文件夹就可以有效避免文件夹内容不为空的异常,因为

    在去删除文件夹之前,该文件夹里面的文件已经被删除了。

    @Testvoid testDeleteFileDir5() throws IOException {   createMoreFiles();   Path path = Paths.get("D:\data\test1\test2");   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;         }      }   );}

    下面的输出体现了文件的删除顺序

    文件被删除 : D:\data\test1\test2\test2.log

    文件被删除 : D:\data\test1\test2\test3\test3.log

    文件夹被删除 : D:\data\test1\test2\test3\test4\test5

    文件夹被删除 : D:\data\test1\test2\test3\test4

    文件夹被删除 : D:\data\test1\test2\test3

    文件夹被删除 : D:\data\test1\test2

    我们既然可以遍历出文件夹或者文件,我们就可以在处理的过程中进行过滤。比如:

    按文件名删除文件或文件夹,参数Path里面含有文件或文件夹名称

    按文件创建时间、修改时间、文件大小等信息去删除文件,参数BasicFileAttributes 里面包含了这些文件信息。

    Files.walk

    如果你对Stream流语法不太熟悉的话,这种方法稍微难理解一点,但是说实话也非常简单。

    使用Files.walk遍历文件夹(包含子文件夹及子其文件),遍历结果是一个Stream

    对每一个遍历出来的结果进行处理,调用Files.delete就可以了。

    @Testvoid testDeleteFileDir6() throws IOException {   createMoreFiles();   Path path = Paths.get("D:\data\test1\test2");   try (Stream<Path> walk = Files.walk(path)) {      walk.sorted(Comparator.reverseOrder())         .forEach(DeleteFileDir::deleteDirectoryStream);   }}private static void deleteDirectoryStream(Path path) {   try {      Files.delete(path);      System.out.printf("删除文件成功:%s%n",path.toString());   } catch (IOException e) {      System.err.printf("无法删除的路径 %s%n%s", path, e);   }}

    问题:怎么能做到先去删除文件,再去删除文件夹? 

    利用的是字符串排序规则,从字符串排序规则上讲,“D:\data\test1\test2”一定排在“D:\data\test1\test2\test2.log”的前面。

    所以我们使用“sorted(Comparator.reverseOrder())”把Stream顺序颠倒一下,就达到了先删除文件,再删除文件夹的目的。

    下面的输出,是最终执行结果的删除顺序。

    删除文件成功:D:\data\test1\test2\test3\test4\test5

    删除文件成功:D:\data\test1\test2\test3\test4

    删除文件成功:D:\data\test1\test2\test3\test3.log

    删除文件成功:D:\data\test1\test2\test3

    删除文件成功:D:\data\test1\test2\test2.log

    删除文件成功:D:\data\test1\test2

    传统IO-递归遍历删除文件夹

    传统的通过递归去删除文件或文件夹的方法就比较经典了

    //传统IO递归删除@Testvoid testDeleteFileDir7() throws IOException {   createMoreFiles();   File file = new File("D:\data\test1\test2");   deleteDirectoryLegacyIO(file);}private void deleteDirectoryLegacyIO(File file) {   File[] list = file.listFiles();  //无法做到list多层文件夹数据   if (list != null) {      for (File temp : list) {     //先去递归删除子文件夹及子文件         deleteDirectoryLegacyIO(temp);   //注意这里是递归调用      }   }   if (file.delete()) {     //再删除自己本身的文件夹      System.out.printf("删除成功 : %s%n", file);   } else {      System.err.printf("删除失败 : %s%n", file);   }}

    需要注意的是:

    listFiles()方法只能列出文件夹下面的一层文件或文件夹,不能列出子文件夹及其子文件。

    先去递归删除子文件夹,再去删除文件夹自己本身。

    “Java中删除文件或文件夹的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: Java中删除文件或文件夹的方法有哪些

    本文链接: https://www.lsjlt.com/news/356724.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Java中删除文件或文件夹的方法有哪些
      本篇内容介绍了“Java中删除文件或文件夹的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!删除文件或文件夹的四种基础方法下面的四个...
      99+
      2023-07-06
    • java io文件操作删除文件或文件夹的方法
      这篇文章主要讲解了“java io文件操作删除文件或文件夹的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java io文件操作删除文件或文件夹的方法”吧!一、删除文...
      99+
      2023-06-29
    • 删除文件或文件夹的多种方法
      删除文件或文件夹的多种方法 当杂乱无章的文件或文件夹造成磁盘空间无谓消耗时,您便可利用由Windows XP提供的多种方法将不再需要的文件或文件夹删除掉。您可在Windows资源管理器中利用以下任意一种方法执行删除操作:...
      99+
      2023-05-24
      删除文件 文件夹 多种方法 文件 方法
    • Java中删除文件或文件夹的几种方法总结
      目录删除文件或文件夹的四种基础方法上面的四个方法简单对比File.delete()和Files.delete(Path path)对比如何删除整个目录或者目录中的部分文件walkFi...
      99+
      2023-05-15
      Java删除文件 Java删除文件夹
    • Java怎么删除文件或文件夹
      本篇内容主要讲解“Java怎么删除文件或文件夹”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么删除文件或文件夹”吧!删除文件或文件夹的四种基础方法下面的四个方法都可以删除文件或文件夹。...
      99+
      2023-07-06
    • java io文件操作删除文件或文件夹的7种方法
      目录一、删除文件或文件夹的四种基础方法二、如何删除整个目录或者目录中的部分文件前提准备2.1. walkFileTree与FileVisitor2.2.Files.walk2.3.传...
      99+
      2022-11-13
    • java中删除文件/文件夹的3种方法
      1、通过io删除文件 public static void deleteFileByIO(String filePath) { File file = new File(...
      99+
      2023-08-31
      java 开发语言
    • 在OneDrive中删除文件或文件夹
      要在OneDrive中删除文件或文件夹,请按照以下步骤操作:1. 打开OneDrive应用或访问OneDrive网站(https:/...
      99+
      2023-09-13
      OneDrive
    • linux批量删除文件夹的方法有哪些
      在Linux中,有多种方法可以批量删除文件夹。以下是几种常见的方法:1. 使用rm命令:使用rm命令可以删除文件夹以及文件夹中的所有...
      99+
      2023-08-08
      linux
    • Linux系统删除文件夹的方法有哪些
      在Linux系统中,删除文件夹的方法有以下几种:1. 使用rm命令:可以使用rm命令删除文件夹及其内容。例如,要删除名为folder...
      99+
      2023-09-07
      Linux
    • nodejs清空/删除指定文件夹下面所有文件或文件夹的方法示例
      同步函数: //使用fs.readdir()方法读取文件夹中的所有文件和文件夹,然后使用递归来删除每个文件和文件夹。 const fs = require('fs'); const ...
      99+
      2023-05-15
      nodejs 清空 删除 文件夹 文件
    • 如何在 Python 中删除文件或文件夹?
      问: 如何删除文件或文件夹? 答1: huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。 os.remove() 删除一个文件。...
      99+
      2023-09-05
      python 开发语言 iot c++ ide
    • Linux中有哪些删除文件夹和文件的命令
      今天就跟大家聊聊有关Linux中有哪些删除文件夹和文件的命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任...
      99+
      2023-06-09
    • Win8删除那些无法删除的文件夹的方法
      点击继续后我又想到是不是该重启一下(没办法,windows稍微跟注册表有关的就得重启,这是多么蛋疼的事,而linux完全没必要!)。重启后,实践是检验真理的唯一标准!我就直接告诉你吧还是不行。网上找答案去,...
      99+
      2022-06-04
      文件夹 方法
    • 在OneDrive中还原已删除文件或文件夹
      在OneDrive中,您可以还原已删除的文件或文件夹。下面是操作步骤:1. 打开OneDrive网页版,登录您的账户。2. 在左侧导...
      99+
      2023-09-13
      OneDrive
    • Python中有哪些删除文件的方法
      Python中有哪些删除文件的方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用Python删除文件有多种方法,但是最好的方法如下: os.remove()删...
      99+
      2023-06-15
    • 如何使用Windows XP删除文件或文件夹的多种方法
      本篇文章给大家分享的是有关如何使用Windows XP删除文件或文件夹的多种方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。删除文件或文件夹的多种方法 当杂乱无章的文件或文件...
      99+
      2023-06-14
    • php删除文件的方法有哪些
      在PHP中,有多种方法可以删除文件,包括:1. unlink()函数:此函数用于删除文件。需要传递文件路径作为参数。```php$f...
      99+
      2023-09-16
      php
    • 有哪些Shell中删除某些文件外所有文件的方法
      本篇内容介绍了“有哪些Shell中删除某些文件外所有文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!假设要删除 ~/Download...
      99+
      2023-06-09
    • linux删除文件夹的命令有哪些
      这篇文章主要介绍linux删除文件夹的命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!linux删除文件夹的命令:1、rmdir命令,使用“rmdir [-p] 文件夹名”即可删除空的指定文件夹;2、rm命令...
      99+
      2023-06-06
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作