2016-08-01 62 views
0

我一直在使用石英写程序的批量系统,我发现一个问题,文件renameTo&File.delete

if(!file.renameTo(new File(PATH_FILE_PROCESSED+file.getName())))System.out.println("Cannot Move File :"+file.getAbsolutePath()); 
else{ 
    if(!file.delete())System.out.println("Cannot Delete File :"+file.getAbsolutePath());  
} 

我想从一个目录中的文件移动到另一个目录,但我不能删除该文件在我的分析相同的过程中,我认为该文件还没有完成复制,然后运行file.delete(); 我的问题是,有没有办法等到文件完成复制后再运行file.delete? 感谢

+0

读你的代码,当'renameTo'调用*成功时,它看起来像进入'else'块。所以,该文件不再存在于原来的位置。所以,你不能从原来的位置删除它,因为它已经不存在了。 –

+0

no renameTo在java中实际上复制文件不移动文件多数民众赞成为什么我想要删除它时,它成功 –

+0

如果'File.renameTo'复制文件而不是重命名它,而不是你的平台上有问题 - 它是不应该这样做。同样的问题也可能影响删除操作。 –

回答

0

重命名几乎是瞬间,因为它不会复制该文件,它只是移动它出现在哪个目录

(除非你的文件系统之间移动)在Windows上,你不能重命名或删除如果你有文件打开的地方。确保你有close()编辑它。

+0

谢谢你回答@Peter Lawrey但我java.io.File没有关闭()命令你有任何其他方式? –

+0

如果关闭文件是真正的问题,请尝试查找一些'InputStream'(或'OutputStream'),'BufferedReader',这些东西可以用来读/写文件。 – Ephi

+0

@NoobatPrograming你在哪里处理文件? –

0

我想我已经找到了问题,问题是当我在zip文件中插入一些其他代码已经插入数据,所以它创建数据库中的重复,它会创建一个这样的错误。所以谢谢你回答这个问题

相关问题