如何检查移动文件是否在perl中完成?

How to check if moving a file is finished in perl?

我有一个将文件移动到文件夹中的 Perl 脚本。每次运行时,它都会检查文件夹中的文件名。但是如果我有一个更大的文件,当它检查文件名时它可能还没有准备好移动,而且它真的会把东西弄乱。我想在循环结束时停止并检查移动是否完成,然后再继续。

sleep 1 while -e $original_filename;

有很多选项,甚至还有无限 while 选项,但您需要格式化代码,以确保如果文件永远不存在,您不会将脚本置于永久循环中。

三种常用方法。

  1. 监控文件大小。假设文件大小在 X 秒内没有改变时就完成了。实施起来很困难,容易出错。
  2. 在移动的文件完成后上传标记文件。检查标记而不是原始文件是否存在。
  3. 使用不同的名称复制文件。传输完成后重命名。