Java .delete()的重复使用
我试图创建一种方法,在数据采集程序中重命名日志文件,但在访问日志文件一次(第二次数据跟踪)后不久尝试访问日志文件时,会抛出一个Java .delete()的重复使用,java,file-io,Java,File Io,我试图创建一种方法,在数据采集程序中重命名日志文件,但在访问日志文件一次(第二次数据跟踪)后不久尝试访问日志文件时,会抛出一个IOException 我不知道是因为调用了.delete(),还是在访问文件之前必须确保文件已关闭。我真的被这件事难住了。这是我正在研究的方法 public static void renameFile(String oldName, String newName) throws IOException { File srcFile = new File(old
IOException
我不知道是因为调用了.delete()
,还是在访问文件之前必须确保文件已关闭。我真的被这件事难住了。这是我正在研究的方法
public static void renameFile(String oldName, String newName) throws IOException
{
File srcFile = new File(oldName).getAbsoluteFile();
boolean bSucceeded = false;
try
{
File destFile = new File(newName).getAbsoluteFile();
if (destFile.exists())
{
if (!destFile.delete())
{
throw new IOException(oldName + " was not successfully renamed to " + newName + ", could not perform !destFile.delete()");
}
}
if (!srcFile.renameTo(destFile))
{
throw new IOException(oldName + " was not successfully renamed to " + newName + ", could not rename source file");
}
else
{
bSucceeded = true;
}
}
finally
{
if (bSucceeded)
{
srcFile.delete();
}
}
}
代码看起来还可以,但正如您所提到的,您必须确保在调用此方法之前关闭该文件。在Unix上,这可能有效,但在Windows上,您肯定无法重命名或删除具有打开的文件描述符的文件。您能发布异常的完整堆栈跟踪吗?谢谢,这真的很有帮助!我将确保在文件上实现.close()