当前位置:编程学习 > JAVA >>

File.delete()删除文件,偶尔删除失败。有遇到过类似的情况的没有吗?快疯了

File.delete()删除文件,偶尔删除失败。有遇到过类似的情况的没有吗?快疯了

庆祝国庆可没有这么疯狂 --------------------编程问答-------------------- 木有啊。。。删除失败的时候报的是神马错? --------------------编程问答-------------------- 木错,木异常。 --------------------编程问答-------------------- 文件打开的时候 是不允许删除的。 --------------------编程问答-------------------- file.delete()有参数返回的
可以用boolean判断下 --------------------编程问答-------------------- i没遇到过 --------------------编程问答-------------------- 为什么会有删除失败的情况呢?
引用 3 楼 afer198215 的回复:
文件打开的时候 是不允许删除的。
--------------------编程问答-------------------- 貌似 删前判断下是否存在这个文件,然后删不会有问题。 --------------------编程问答-------------------- 1.文件夹 确保文件夹为空
2.非文件夹  确保文件没有被任何进程占用 --------------------编程问答-------------------- 首先要保证文件没有被占用的情况下删除 --------------------编程问答-------------------- 如果删除的是文件夹,要确保文件夹下面没有文件。
如果删除的是文件,要确保没使用这个文件。 --------------------编程问答-------------------- file.delete会返回一个boolean值表示删除成功或失败。

还有一个方法

file.deletOnExit在虚拟机退出时删除 --------------------编程问答--------------------
引用 8 楼 liuyuhua0066 的回复:
1.文件夹 确保文件夹为空
2.非文件夹  确保文件没有被任何进程占用



这个说法是对的

还有 你要确保你的文件路径确实有那个文件
比如你写成:

File File = new File("123.txt"); //可能根本就没有这个文件和目录,因为相对路径经常写错
File.delete();//文件名写错了时,这里不会报错,你也删不了你希望删的文件了



此外"File"作为这个变量名,也是相当愚蠢的,因为你写成File.delete()
 我以为你正在调用File中的静态方法detele();








--------------------编程问答-------------------- 删除文件时,该文件的流不能被打开,否则删除失败! --------------------编程问答-------------------- 那有报什么异常没 --------------------编程问答--------------------
引用 14 楼 leehomwong 的回复:
那有报什么异常没

file.delete()好像不会报异常,只是会返回一个boolean值 --------------------编程问答-------------------- 用线程,进行延迟删除看看! --------------------编程问答-------------------- 比如你拿Office打开一个文件,然后程序再操作 --------------------编程问答-------------------- 试试我给你的这个呀

package org.file.demo;

import java.io.File;

public class IODemo {

    public static void main(String[] args) throws Exception {

        File file = new File("D:" + File.separator + "testjava"); // 要创建的文件

        list(file);

    }

    public static void list(File file) { // 列出目录内容

        if (file.isDirectory()) { // 现在给定的路径是目录

            File f[] = file.listFiles(); // 列出

            if (f != null) { // 可以列出内容

                for (int x = 0; x < f.length; x++) {

                    list(f[x]); // 继续向下列出,递归

                }

            }

        }

        file.delete();  
}
}
 
--------------------编程问答-------------------- 我见过这样的情况,需要更改.txt文件里面的内容,思路是删除原来的文件然后新建一个同名的文件,但文件就是不能删除。纠结了好长时间也没能解决,后来没办法只能用数据库取代了。 --------------------编程问答-------------------- 可能是这个原因吧。还有就是打开的文件不能删除。
引用 7 楼 jsut_yi 的回复:
貌似 删前判断下是否存在这个文件,然后删不会有问题。
--------------------编程问答--------------------
引用楼主 oooyooo 的回复:
File.delete()删除文件,偶尔删除失败。有遇到过类似的情况的没有吗?快疯了

庆祝国庆可没有这么疯狂

你说的是文件没有删除掉还是调用方法后返回false?
如果是调用File.delete()方法后返回false,那么就有3种情况:
1、文件不存在
2、删除的文件是文件夹,且文件夹不为空。
3、文件正在被其他程序使用,或文件夹已被打开。
如果是不能删除文件,则只可能是2和3两种情况。

解决方法:
1、删除文件前判断文件是否存在。
2、遍历并循环删除文件夹下的文件后再删除文件夹。
3、如果是windows操作系统,安装一个名为unlocker的软件,对你要删除的文件右击并选择“Unlocker”就可以查看是什么程序打开了该文件。 --------------------编程问答-------------------- 补充一下:
2、删除的文件是文件夹,且文件夹不为空。
如果是windows平台也可以使用rd命令加/s参数对文件夹及文件夹中的文件进行删除。 --------------------编程问答-------------------- 这个特别是上传临时文件后又要删除的时候 ,经常遇到。建议:根据boolean来判断,如果删不掉可以启动一个线程来删除,这个线程可以设置为守护线程。实在不行就写个定时器。 --------------------编程问答-------------------- 要删除 的文件夹必须为空才可以删除,删除之前可以先判断一下是否为空,不空则先删掉子文件再进行删除 --------------------编程问答--------------------
引用 12 楼 k3108001263 的回复:
引用 8 楼 liuyuhua0066 的回复:

1.文件夹 确保文件夹为空
2.非文件夹 确保文件没有被任何进程占用



这个说法是对的

还有 你要确保你的文件路径确实有那个文件
比如你写成:

Java code

File File = new File("123.txt"); //可能根本就没有这个文件和目录,因为相对路径经常写错
    File.de……


我也以为File调用的静态方法~~汗了 --------------------编程问答--------------------
引用 19 楼 darling_sheep 的回复:
我见过这样的情况,需要更改.txt文件里面的内容,思路是删除原来的文件然后新建一个同名的文件,但文件就是不能删除。纠结了好长时间也没能解决,后来没办法只能用数据库取代了。



哥们儿,我现在也遇到这个问题,纠结啊,后面你搞定了没有呢?就是删不掉。但是其他文件就可以删。郁闷了 --------------------编程问答-------------------- 我觉着有可能是你的本地文件有可能有用到输入输出流的地方没有将输入输出流关闭 --------------------编程问答--------------------
引用 21 楼  的回复:
如果是调用File.delete()方法后返回false,那么就有3种情况:
1、文件不存在
2、删除的文件是文件夹,且文件夹不为空。
3、文件正在被其他程序使用,或文件夹已被……


我还能想到一种情况,用户没有权限 --------------------编程问答-------------------- 如果file是目录并且目录不是空目录会有这样的情况 --------------------编程问答-------------------- 是不是同时删除的时候报错? --------------------编程问答--------------------
引用 15 楼 x19881216 的回复:
引用 14 楼 leehomwong 的回复:
那有报什么异常没
file.delete()好像不会报异常,只是会返回一个boolean值

会报异常的
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,