我正在尝试创建一个在数据收集程序中重命名日志文件的方法,但是在访问日志文件后不久尝试访问该日志文件时,会(不频繁地)抛出一个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 上,您绝对不能重命名或删除具有打开文件描述符的文件。
关于java - .delete() 的冗余使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835487/