java删除文件失败问题....................................................................

wantedsheep 2009-08-07 01:50:41
当进行文件删除的时候会出现删除失败,即使在调用system.gc后,还是会出现删除文件不成功的问题!我单个试的时候是可以的,但是我在程序中,放在线程中就会有时删不掉!。。。。。
...全文
1150 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
janwin 2011-10-09
  • 打赏
  • 举报
回复
一般是有流没关闭,我就是有流没关闭导致的
alvin198761 2011-08-24
  • 打赏
  • 举报
回复
用jcom 或者jacob的时候,总是有文件删除不掉的情况,我也不知道怎么处理,不知道有没有高人来解决哦
SvenDota 2011-01-21
  • 打赏
  • 举报
回复
哎 我也遇到过 就算那个方法加上同步 有时还是刷不掉 system.gc()也用了 还是不行
wusenet041 2009-08-11
  • 打赏
  • 举报
回复
用个synchroni........
qingkangxu 2009-08-11
  • 打赏
  • 举报
回复
请检查你是否用流打开文件之后没有关闭流,这个可能性有30%。
wantedsheep 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 keelywell 的回复:]
引用 5 楼 zhouzongjiu 的回复:
在多线程环境中,可能会有其他线程操作此文件,所以删不掉,注意程序中操作文件的同步问题。


正解,多线程要注意这个问题,最好加锁!!!
[/Quote]
我只是用了一个线程,在线程的run方法里实现了死循环,在循环里放着一个方法,方法执行完了sleep(200),我的目的就是要一直运行这个方法
wantedsheep 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouzongjiu 的回复:]
在多线程环境中,可能会有其他线程操作此文件,所以删不掉,注意程序中操作文件的同步问题。
[/Quote]
我只是用了一个线程,在线程的run方法里实现了死循环,在循环里放着一个方法,方法执行完了sleep(200),我的目的就是要一直运行这个方法
myloveyoyo1314 2009-08-11
  • 打赏
  • 举报
回复
多线程时候 清理一下思路和环境 保证该文件没有被其他线程 以及系统调用 建议检查一下程序流程 看看该文件是否在其他部位被引用
nino 2009-08-11
  • 打赏
  • 举报
回复
恩 同意楼上判断canWrite() 的方法
bayougeng 2009-08-11
  • 打赏
  • 举报
回复
if(p_file.canWrite()) 删除
else sleep
teemai 2009-08-09
  • 打赏
  • 举报
回复
估计是线程同步问题
Kee 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouzongjiu 的回复:]
在多线程环境中,可能会有其他线程操作此文件,所以删不掉,注意程序中操作文件的同步问题。
[/Quote]

正解,多线程要注意这个问题,最好加锁!!!
phuwan 2009-08-08
  • 打赏
  • 举报
回复
同意5楼的说法~~
gerryliu 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouzongjiu 的回复:]
在多线程环境中,可能会有其他线程操作此文件,所以删不掉,注意程序中操作文件的同步问题。
[/Quote]
这个的可能性很大~
zhouzongjiu 2009-08-07
  • 打赏
  • 举报
回复
在多线程环境中,可能会有其他线程操作此文件,所以删不掉,注意程序中操作文件的同步问题。
wantedsheep 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ginnn 的回复:]
请上代码
[/Quote]
	public void doMove2Remote(String targetPath,String recordTargetPath,String smbMachine) throws IOException{
File file1 = new File(targetPath);
File[] files = file1.listFiles();

for(int i=0;i<files.length;i++){

File file2 = files[i];
MoveFile mf = new MoveFile();
mf.move2Remote(file2,recordTargetPath,smbMachine);
System.gc();
file2.delete();
}

}
wantedsheep 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq271175778 的回复:]
Java code
File file=new File(path);if(file.exists()){

System.out.println("文件存在");if(file.delete()){
System.out.println("文件已删除");
}else{
¡­
[/Quote]
我知道这个文件删除怎么使用,但是,很多次会失败!如果在删除前调用了system.gc 那样成功概率会高点
【如鱼饮水】 2009-08-07
  • 打赏
  • 举报
回复

File file = new File(path);

if(file.exists()){

System.out.println("文件存在");

if(file.delete()){
System.out.println("文件已删除");
}else{
System.out.println("文件"+path+"\\xml\\"+filename+"没有删除删除");
}
}else{
System.out.println("文件在"+path+"\\xml\\"+filename+"没有找到");
}
}catch(Exception e){
System.out.println(e.getMessage());
}

ginnn 2009-08-07
  • 打赏
  • 举报
回复
请上代码

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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