file.delete()删除不掉文件

查阅了网上的资料,很多人说是有文件流没有关闭,导致文件被占用,无法删除,但是检查并未发现存在未关闭文件流。

后在网上看到一种解决方式

 

public static boolean forceDelete(File f)  
	{  
	    boolean result = false;  
	    int tryCount = 0;  
	    while(!result && tryCount++ <10)  
	    {  	    
	    System.gc();  
	    result = f.delete();  
	    }  
	    return result;  
	}  
执行10次垃圾回收后删除,目前可以解决这个问题

继续查阅资料,好像是因为映射占用的问题,在如下网站有解决方式

https://stackoverflow.com/questions/2972986/how-to-unmap-a-file-from-memory-mapped-using-filechannel-in-java

public static void unMapBuffer(MappedByteBuffer buffer, Class channelClass) {
    if (buffer == null) {
        return;
    }

    try {
        Method unmap = channelClass.getDeclaredMethod("unmap", MappedByteBuffer.class);
        unmap.setAccessible(true);
        unmap.invoke(channelClass, buffer);
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }
}


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值