JAVA程序中文件删除的问题 有一个火急的问题:我在JAVA程序中用java.io.File.delete()删除文件时,当文件较小时,一般都成功了。但是,当文件增大时,比如为1M以上或更大时,删除文件一般都不成功,这让我非常纳闷。诚心向各位大虾请教,JAVA删除文件时有何限制?保险的删除文件方式是怎样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有显示什么,只是testFile.delete()==false,单独做一个测试删除文件的程序,不论文件多大都能成功,我现在的删除方法是嵌套在一个线程当中,才出了问题 以下是这段程序:class MyThread extends Thread { static ConvertCdr cdr = new ConvertCdr(); public synchronized void run (String mypath,String filename) { ListeningFile client = new ListeningFile(); File myfile[] = client.displayAllFileOfDirectory(mypath);//取目录mypath所有合适的文件 if (myfile.length>0){ for(int i=0;i<myfile.length;i++){ if(myfile[i].isFile()){ filename = myfile[i].getName(); System.out.println("正在处理文件" + filename + "..."); //invoke Method ConvertCdr.rateProccess() try{ File cdrFile = new File(mypath+filename); cdr.rateProcess(cdrFile);//对文件的处理,与删除不相干 if (cdrFile.isAbsolute()) if (cdrFile.delete() == false)//当文件在1M以上时,基本上都会false System.out.println("Delete failed ..."); } catch(Exception e){ System.out.println("Error: "+e.getMessage()); } } }//end for } }} 可能是:cdr.rateProcess(cdrFile);//对文件的处理,与删除不相干引起的在处理文件后,即使已关闭打开的文件,由于系统缓冲关系(特别是大文件),文件仍处于锁定状态(以前用VC就碰到过)你可用以下伪代码试试 for(i=i;i<5;i++) // 试5次 { if (cdrFile.delete() == true) break; Sleep(100); // 等.1秒 } 我已经找到了解决办法,那就是在delete()方法前进行垃圾回收,调用System.gc()即可。谢谢各位! 测试发帖 五子棋网络+人机对战游戏编程 问个疑惑的问题 如何去掉JButton文字周围的线框 急,请高手指点,明天考试啊!谢啦! 如何用java实现用8位二进制数表示一个字符?高手帮忙! jre 和 jvm 有什么区别? 一个简单的问题,关于NullPointerException 如何确保在同一时间只有一个应用程序在运行 向一个DefaultTableModel插入一行数据为何失败??? 有什么可以替代 SequencedHashMap 请教一个经典的mysql问题
class MyThread extends Thread {
static ConvertCdr cdr = new ConvertCdr();
public synchronized void run (String mypath,String filename) {
ListeningFile client = new ListeningFile();
File myfile[] = client.displayAllFileOfDirectory(mypath);//取目录mypath所有合适的文件
if (myfile.length>0){
for(int i=0;i<myfile.length;i++){
if(myfile[i].isFile()){
filename = myfile[i].getName();
System.out.println("正在处理文件" + filename + "...");
//invoke Method ConvertCdr.rateProccess()
try{
File cdrFile = new File(mypath+filename);
cdr.rateProcess(cdrFile);//对文件的处理,与删除不相干
if (cdrFile.isAbsolute())
if (cdrFile.delete() == false)//当文件在1M以上时,基本上都会false
System.out.println("Delete failed ...");
}
catch(Exception e){
System.out.println("Error: "+e.getMessage());
}
}
}//end for
}
}
}
cdr.rateProcess(cdrFile);//对文件的处理,与删除不相干
引起的
在处理文件后,即使已关闭打开的文件,由于系统缓冲关系(特别是大文件),文件仍处于锁定状态(以前用VC就碰到过)
你可用以下伪代码试试
for(i=i;i<5;i++) // 试5次
{
if (cdrFile.delete() == true)
break;
Sleep(100); // 等.1秒
}