一般来说 java file.delete失败 有以下几个原因
1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用)
2.file是文件夹 并且不为空,有别的文件夹或文件,
3.极有可能有可能自己前面没有关闭此文件的流(我遇到的情况)
这个方法我用来获取文件的大小,用到了流类,但是用完了没有关闭,导致无法删除文件:
public String getfilesize(String path,String filename) throws IOException {
String pathString=path+"\\"+filename;
f=new File(pathString);
FileInputStream fis=new FileInputStream(f);
String time=String.valueOf(((double)fis.available() / 1024));
fis.close();//当时这里没有关闭
return time.substring(0, time.indexOf(".")+2)+"K";
}
还有一种不是因为流占用的原因,后在网上看到一种解决方式
- public static boolean forceDelete(File f)
- {
- boolean result = false;
- int tryCount = 0;
- while(!result && tryCount++ <10)
- {
- System.gc();
- result = f.delete();
- }
- return result;
- }
继续查阅资料,好像是因为映射占用的问题,在如下网站有解决方式
https://stackoverflow.com/questions/2972986/how-to-unmap-a-file-from-memory-mapped-using-filechannel-in-java
本文探讨了Java中文件删除失败的常见原因,并提供了解决方案,包括检查文件是否被其他进程引用、确保文件夹为空及关闭文件流等。此外,还介绍了一种通过多次执行垃圾回收来尝试解除文件映射占用的方法。
1729

被折叠的 条评论
为什么被折叠?



