文件操作冲突

时间:2014-10-15 12:02:40

标签: delphi pascal

我正在编写一个程序,它不断在目录中查找新文件。在从每个文件中提取数据并对其进行一些处理后,文件将被移动到包含所有扫描文件的另一个目录。

想象一下,当我的程序运行时,我正在扫描目录中复制一个新文件。可以处理尚未完成复制的文件(然后产生无法预料的结果),还是被系统锁定?

现在,假设程序的两个实例在两台不同的计算机上运行,​​不断扫描同一个文件夹。如果两个实例都试图移动同一个文件会发生什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我有一个项目做同样的事情。另一个应用程序是从提要接收数据并将文件写入文件夹。我的应用程序通过打开它们来处理这些文件,以某种方式对它们进行操作,将它们写入另一个文件夹,然后删除它们。

我在执行处理和删除的应用程序中使用的策略是简单地打开它们:

TFileStream.Create(AFileName, fmOpenRead OR fmShareDenyWrite);

如果正在打开的文件仍由另一个进程写入,则上述操作将失败,并且可能在后续迭代中成功打开。

相关问题