1

我是这个论坛的新手。我正在编写一个程序来将文件从一台机器同步到另一台机器。虽然它工作正常,但我在使用 excel 文件(.xls、.xlsx)时遇到了一些问题。假设我已经从客户端 C1 备份了一个 xls 文件,并将其更新到其他客户端,比如 C2。这通过 librsync 算法逐渐发生。

现在的场景是:

a.xls在 C1 和 C2 中都有一个文件,这个文件是从 C1 修改的,需要更新到 C2。在此期间,如果文件(与以前的版本)已经在 C2 中打开,我无法以相同的名称更新它。通常在对 C2 进行此类更新时,我们通常会写入一个临时文件 ( a.xls.tmp),完成此操作后,a.xls.tmp将重命名为 a.xls。此重命名选项失败为a.xls 已在 C2 中打开。

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

如果您能就如何以编程方式处理此类情况提出一些建议,我将不胜感激。我正在为我的案例使用 C++。

谢谢,文卡特

4

1 回答 1

1

在 Windows 中,无法重命名(或删除)当前打开的文件。据我所知,这是没有办法的。唯一的方法是等到其他进程关闭文件。如果它是保持文件打开的东西,那当然可能需要一段时间。

于 2013-08-30T19:11:43.763 回答