是否有可能重命名已经在使用的xls文件?

我是这个论坛的新手。 我正在编写一个程序来将文件从一台机器同步到另一台机器。 虽然它工作正常,我正面临与Excel文件(.xls,.xlsx)的一些问题。 假设我已经从客户端C1支持一个xls文件,并更新到其他客户端说C2。 这通过librsyncalgorithm递增地发生。

现在情况是:

我在C1和C2中都有一个文件a.xls ,这个文件正在从C1修改,需要更新到C2。 在这段时间内,如果文件(以前的版本)已经在C2中打开,我无法用相同的名称更新它。 通常在对C2进行这种更新时,我们习惯在一个临时文件( a.xls.tmp )中写入,并且在完成之后, a.xls.tmp将被重命名为a.xls。 这个重命名选项失败了,因为在C2中已经打开了a.xl

但这不是唯一的情况。 有时反病毒或其他备份产品可能会lockingExcel文件,并再次重命名操作失败。 由于这些因素,我不完全知道文件是否在目标机器(在这里是C2)中使用。

如果你能提出一些build议如何以编程方式处理这些情况,我将不胜感激。 我为我的情况使用C ++。

谢谢,venkat

在Windows中,无法重命名(或删除)当前打开的文件。 据我所知,没有办法解决这个问题。 唯一的方法是等到另一个进程closures文件。 当然,如果能够保持文件的开放,这当然可能是一段时间。