java File delete()执行失败原因(转)

简介: java.io.File里的delete操作很实用也很常用,可以用来删除单独的文件和某一目录。但有时候会出现delete失败的情况,出现这种情况的原因一般有以下几种:1、删除时还有其他程序在使用该文件,此时将无法正确删除2、没有close关闭和该文件相关的所有输入输出流等,导致无法删除(这一点是最容易忘记的,你犯的可能就是这一条)3、当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。

java.io.File里的delete操作很实用也很常用,可以用来删除单独的文件和某一目录。但有时候会出现delete失败的情况,出现这种情况的原因一般有以下几种:
1、删除时还有其他程序在使用该文件,此时将无法正确删除
2、没有close关闭和该文件相关的所有输入输出流等,导致无法删除(这一点是最容易忘记的,你犯的可能就是这一条)
3、当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。这里可以采用listFiles对目录下的文件或者目录进行处理。
下面给出一个具体的例子:

File f = new File(path);
DataOutputStream dos = new DataOutputStream(new FileOutputStream(f));
 if (f.exists()) {
                    System.out.println(f.getAbsoluteFile());
                    if (!f.delete()) {
                        System.out.println("请关闭使用该文件的所有进程或者流!!");
                    } else {
                        System.out.println(f.getName()+" 成功被删除!");
                    }
                }

此时f是无法delete的,即f.delete()将返回false,原因就在于没有关闭dos.所以需要在if之前加入一句f.close(),这样就可以删除成功了。

File f = new File(path);
DataOutputStream dos = new DataOutputStream(new FileOutputStream(f));
dos.close();
 if (f.exists()) {
                    System.out.println(f.getAbsoluteFile());
                    if (!f.delete()) {
                        System.out.println("请关闭使用该文件的所有进程或者流!!");
                    } else {
                        System.out.println(f.getName()+" 成功被删除!");
                    }
                }

 

 

相关文章
|
1月前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
64 3
|
3月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
250 12
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
4月前
|
Java 编译器
成功解决:java file outside of source root
解决Java文件不在源代码根目录内的问题,可以通过在IDEA中将包含.java文件的目录设置为Sources Root来修复。
成功解决:java file outside of source root
|
4月前
|
安全 Java 应用服务中间件
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
|
4月前
|
Java
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
|
4月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
60 3
|
5月前
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
201 9
|
5月前
|
easyexcel Java Apache
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
458 0
|
5月前
|
Java
Java之file,创建文件,File f1 = new File(“E:\\itcast\\java.txt“),先f1定路径,在f1.createNewFile()就能够创建文件,mkdir目录
Java之file,创建文件,File f1 = new File(“E:\\itcast\\java.txt“),先f1定路径,在f1.createNewFile()就能够创建文件,mkdir目录