我是这个论坛的新手。我正在编写一个程序来将文件从一台机器同步到另一台机器。虽然它工作正常,但我面临着excel文件(.xls,.xlsx)的一些问题。假设我已经从客户端C1备份了一个xls文件,并将其更新到其他客户端,比如C2。这通过librsync算法逐步发生。
现在的情况是:
我在C1和C2中都有一个文件a.xls
,这个文件是从C1修改的,需要更新到C2。在此期间,如果文件(具有以前的版本)已经在C2中打开,我无法以相同的名称更新它。通常在对C2进行此类更新时,我们曾在临时文件(a.xls.tmp
)中写入,在完成此操作后,a.xls.tmp
将重命名为a.xls。由于a.xl
已在C2中打开,因此重命名选项失败。
但这不是唯一的情况。有时,Anti Virus或其他备份产品可能会锁定excel文件,并且此重命名操作再次失败。由于这些因素,我不确切知道该文件是否在目标机器中使用(此处为C2)。
如果您能提供一些如何以编程方式处理此类案例的建议,我将不胜感激。我正在使用C ++。
谢谢, venkat
答案 0 :(得分:1)
在Windows中,无法重命名(或删除)当前打开的文件。据我所知,目前还没有办法解决这个问题。唯一的方法是等到另一个进程关闭文件。如果它是保持文件打开的东西,当然可能会有一段时间。