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

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()+" 成功被删除!");
                    }
                }

 

 

时间: 2024-10-29 17:40:34

java File delete()执行失败原因(转)的相关文章

android file.delete()删除文件失败?

问题描述 android file.delete()删除文件失败? 权限都加了,为什么删除老是失败? File file = new File(Settings.PIC_PATH); Log.e("tag", Settings.PIC_PATH); if (file.exists()) { boolean f = file.delete(); if(f){ toast("清理成功!"); } Log.e("tag", f + "&quo

几个关于oceanbase因系统原因 sql执行失败的案例

主要遇到的有5种情况: 1.由于合并操作导致sql执行失败的问题 这个问题在一个写入频繁系统中比较常见,之前也讲过怎么导致合并的. 在oceanbase合并期间,需要把内存中的数据落入到磁盘中,为了保证数据的一致性,会将正在执行的sql kill掉,但是sql并不是立刻kill,会保留100ms的时间给这个sql去执行,如果说执行不完成,就会被kill,哪怕是101ms.这时候就会导致sql执行失败. 2.由于sql执行时间超时,导致sql执行失败. 这个问题在所有的数据库中都会有,因为不可能放

java创建socket时失败的原因有哪些?

问题描述 java创建socket时失败的原因有哪些? 最近练习使用socket时,本来能够脸上服务器的,后来不知道怎么的就连不上了,最后定位就是socket创建失败,什么原因我不知道.我知道的原因如下: 1.没有添加连接网络权限. 2.没有在后台线程中创建socket 3.端口号被占用 这些问题我都避免了,而且之前就连上了,后来连不上,抛出IOException,请问还有其他的原因会导致socket创建失败吗? 解决方案 抛出io异常,文件读取的问题.serversocket没有写进数据,so

java中File.delete删除文件实例?

删除指定文件 例子 在这个例子中,它会删除名为日志文件 "c:\logfile20100131.log".  代码如下 复制代码 package com.yiibai.file;   import java.io.File;   public class DeleteFileExample {     public static void main(String[] args)     {       try{         File file = new File("c:

Java程序员面试失败的5大原因

下面是Java程序员面试失败最有可能的5大原因,当然也许这5点原因适用于所有的程序员,所以,如果你是程序员,请认真阅读以下内容. #1 说得太少 尤其是那些开放式的问题,如"请介绍下你自己"或"请讲一下你曾经解决过的复杂问题".面试官会通过你对这些技术和非技术问题的回答来评估你的激情.他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力. 所以,仅仅只用两三句话来回答不但不能显示出你对这个专业的兴趣,还会让整个面试过程显得非常无聊.如果你不能很好地说明你的经

asp.net File.Delete删除文件失败解决方法

asp教程.net file.delete删除文件失败解决方法 if(file.exists(server.mapparh("~/"+filename))   file.delete(server.mapparh("~/"+filename)); 下面看详细删除代码 protected sub button2_click(byval sender as object, byval e as eventargs) handles button2.click      

java-一个简单的登录程序,不想连接数据库就实现登录的功能,问下失败原因

问题描述 一个简单的登录程序,不想连接数据库就实现登录的功能,问下失败原因 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; impo

对 File.Delete 方法的一点看法

在我写的"推箱子"程序的 DataFile 类中有下面这么一个方法: <!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->    /// <summary>     ///  删除通关步骤文件     /// </summary>     /// <param name="lev

java中动态执行一段代码

动态|执行 动态的执行一段简单代码,采用生成java文件,调用javac编译,反射执行的方式. 只是一个简单测试,有些地方有待完善. 代码如下 -------------------------------------------------------------------------------- import java.io.*; /** * 动态执行一段代码(生成文件->编译->执行) * @author kingfish * @version 1.0 */public class