求助:File.delete()怎么删不掉

aerfusi 2008-06-05 04:33:03
......

File file = new File(filePath + fileName);
if (!file.exists()) {
file.createNewFile();
}

......

File file = new File(filePath + fileName);
if (file.exists()) {
file.delete();
}
我在执行这段程序的时候,发现上面的file文件总是能生成,但是在执行file.delete()的时候,有时能删掉,有时却删不掉,而文件名字和路径通过输出都是正确的,很奇怪。
...全文
7656 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengchanghong 2011-09-08
  • 打赏
  • 举报
回复
afasdfasdf
zhengchanghong 2011-09-08
  • 打赏
  • 举报
回复
16楼-->正解 if(in!=null)
in.close();
if(os!=null){
os.flush();
os.close();}
defeile 2010-09-19
  • 打赏
  • 举报
回复
我在解压邮件到临时文件夹中
后来我删去
再遍历删除的时候
遍历的中间总是那么一封邮件删不掉
我删40,50多次才删掉

好奇怪
aerfusi 2008-06-23
  • 打赏
  • 举报
回复
到现在为止还是老样子,只好采用“大猩猩”同志的话,多删几次了。时间已经很长了先结帖吧。
liuxiaotao008 2008-06-09
  • 打赏
  • 举报
回复
有时关闭了流也删不了的!
love1907 2008-06-08
  • 打赏
  • 举报
回复
关闭流,这是做程序员的最基本素质
aerfusi 2008-06-06
  • 打赏
  • 举报
回复
对于执行同一批数据,却也是这样,生成的临时文件有时能删掉,有时删不掉。
file.close()? java里好像没这个方法。
不知道该怎么判定文件是不是还在读取中。但却奇怪同一批数据生成的临时文件,读取也会有快慢?
liuxiaotao008 2008-06-06
  • 打赏
  • 举报
回复
多删几次就可以了.
liuxiaotao008 2008-06-06
  • 打赏
  • 举报
回复
看Groovy代码,在Java中是一样的,改改就行了!
def forceDeleteFile(File file)
{
println '\t\tin forceDeleteFile'
Boolean result=false
def delCount=0
while(!result && delCount++ <10)
{
println "\t\ttry to delete file "+ file.getName() +" count:"+delCount
System.gc()
result = file.delete()
}
return result
}
aerfusi 2008-06-06
  • 打赏
  • 举报
回复
qingkangxu,我也将程序改成过这种情况,运行时还是出现同样的问题。
FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream tempStream =new BufferedInputStream(fileInputStream );
......
fileInputStream.close();
tempStream.close();
我再试试其他的方法,相信会找到答案的。

谢谢各位了,端午节要到了,祝大家端午节快乐! ^_^
qingkangxu 2008-06-06
  • 打赏
  • 举报
回复
搂主,我可以说90%的可能是你用文件之后没有关闭流。

因为这个问题我遇见过,也是偶尔删不掉,最后都是查出来有一个地方没有关闭流。

象你下面的代码:
BufferedInputStream tempStream = BufferedInputStream(new FileInputStream(file));
......
tempStream.close();
我建议改成下面:

FileInputStream fileInputStream = new FileInputStream(file);
BufferedInputStream tempStream =new BufferedInputStream(fileInputStream );
......
fileInputStream.close();
tempStream.close();

这样就能绝对保证流被关闭了。
如果还不行,请你一定把file正在用......流没有关 作为解决可能出现的问题去查。
相信你能解决。
aerfusi 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lbqlbq 的回复:]
我估计,是文件正在被占用,所以删不掉,在上边的程序还在对文件进行读取操作,没来得及释放资源,后边的程序就试图删除该文件,你可以试一下,把删除放到另一个文件中操作。
[/Quote]

“把删除放到另一个文件中操作”是什么意思?

String myDelFile = "/*文件名及路徑*/";
Runtime runtime = Runtime.getRuntime();
try{
runtime.exec("CMD /C DEL "+myDelFile);
}catch(Exception e){
}
七楼,这段程序我不太明白,能说一下,这段程序执行的意图吗?
aerfusi 2008-06-06
  • 打赏
  • 举报
回复
File file = new File(filePath + fileName);
if (file.exists()) {
file.delete();
if (file.exists())
System.out.println("气死我了,临时文件怎么老删不掉"+filePath + fileName);
}
我当时运行的时候也加了一个判断,运行几次,后台有时输出有时不输出上面的话,真郁闷。
rascalboy520 2008-06-06
  • 打赏
  • 举报
回复
因为你是放在一下进程里操作的,文件很有可能在被占用,你可以返回file.delete(),看是不是为真,另外你也可以单独测一下delete();也就是在建完文件后,再单独运行一次delete();
duzhonghua 2008-06-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lbqlbq 的回复:]
我估计,是文件正在被占用,所以删不掉,在上边的程序还在对文件进行读取操作,没来得及释放资源,后边的程序就试图删除该文件,你可以试一下,把删除放到另一个文件中操作。
[/Quote]
carnation003 2008-06-06
  • 打赏
  • 举报
回复
有可能是文件較大的問題,不確定。
還有個方法可以試試:

String myDelFile = "/*文件名及路徑*/";
Runtime runtime = Runtime.getRuntime();
try{
runtime.exec("CMD /C DEL "+myDelFile);
}catch(Exception e){
}
lbqlbq 2008-06-06
  • 打赏
  • 举报
回复
我估计,是文件正在被占用,所以删不掉,在上边的程序还在对文件进行读取操作,没来得及释放资源,后边的程序就试图删除该文件,你可以试一下,把删除放到另一个文件中操作。
lbqlbq 2008-06-06
  • 打赏
  • 举报
回复
我估计,是文件正在被占用,所以删不掉,在上边的程序还在对文件进行读取操作,没来得及释放自由,后边的程序就试图删除该文件,你可以试一下,把删除放到另一个文件中操作。
fulianglove 2008-06-06
  • 打赏
  • 举报
回复
Debug下,看看后一个file的没得到,
aerfusi 2008-06-06
  • 打赏
  • 举报
回复
......

File file = new File(filePath + fileName);
if (!file.exists()) {
file.createNewFile();
}
......

BufferedInputStream tempStream = BufferedInputStream(new FileInputStream(file));
......
tempStream.close();

File file = new File(filePath + fileName);
if (file.exists()) {
file.delete();
}

中间是有对文件的读取,都执行了tempStream.close() 为什么还是删不掉呢?
加载更多回复(1)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧