0

我正在尝试创建一种在数据收集程序中重命名日志文件的方法,但是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();
        }
    }
}
4

1 回答 1

2

代码看起来没问题,但正如您所提到的,您必须确保在调用此方法之前关闭文件。在 Unix 上,这可能有效,但在 Windows 上,您绝对不能重命名或删除具有打开文件描述符的文件。

于 2012-08-06T20:35:55.663 回答