我是这个论坛的新手。我正在编写一个程序来将文件从一台计算机同步到另一台计算机。虽然它运行良好,但我在excel文件(.xls、.xlsx)中遇到了一些问题。假设我从客户端C1备份了一个xls文件,并将其更新到其他客户端,比如C2。这是通过库同步算法逐步实现的。
现在的情况是:
我在C1和C2中都有一个文件C2,这个文件正在从C1中被修改,需要更新为C2。在此期间,如果C2中已打开的文件(与以前的版本相同),则无法以相同的名称更新该文件。通常,在对C2进行这样的更新时,我们通常会写入一个临时文件(a.xls.tmp),在完成之后,a.xls.tmp将被重命名为a.xls。此重命名选项失败,因为a.xl的名称已在C2中打开。
但这不是唯一的案例。有时,反病毒或其他备份产品可能锁定excel文件,此重命名操作再次失败。由于这些因素,我不知道该文件是否在目标计算机中使用(此处为C2)。
如果你能给出一些建议,如何处理这类案件,我将不胜感激。我正在用C++来处理我的案子。
谢谢,文卡特
发布于 2013-08-30 19:11:43
在Windows中,无法重命名(或删除)当前打开的文件。据我所知,这是无法避免的。唯一的方法是等待其他进程关闭文件。当然,如果文件是打开的,这可能还需要一段时间。
https://stackoverflow.com/questions/18539716
复制相似问题