如何检查移动文件是否在perl中完成?
How to check if moving a file is finished in perl?
我有一个将文件移动到文件夹中的 Perl 脚本。每次运行时,它都会检查文件夹中的文件名。但是如果我有一个更大的文件,当它检查文件名时它可能还没有准备好移动,而且它真的会把东西弄乱。我想在循环结束时停止并检查移动是否完成,然后再继续。
sleep 1 while -e $original_filename;
有很多选项,甚至还有无限 while 选项,但您需要格式化代码,以确保如果文件永远不存在,您不会将脚本置于永久循环中。
三种常用方法。
- 监控文件大小。假设文件大小在 X 秒内没有改变时就完成了。实施起来很困难,容易出错。
- 在移动的文件完成后上传标记文件。检查标记而不是原始文件是否存在。
- 使用不同的名称复制文件。传输完成后重命名。
我有一个将文件移动到文件夹中的 Perl 脚本。每次运行时,它都会检查文件夹中的文件名。但是如果我有一个更大的文件,当它检查文件名时它可能还没有准备好移动,而且它真的会把东西弄乱。我想在循环结束时停止并检查移动是否完成,然后再继续。
sleep 1 while -e $original_filename;
有很多选项,甚至还有无限 while 选项,但您需要格式化代码,以确保如果文件永远不存在,您不会将脚本置于永久循环中。
三种常用方法。
- 监控文件大小。假设文件大小在 X 秒内没有改变时就完成了。实施起来很困难,容易出错。
- 在移动的文件完成后上传标记文件。检查标记而不是原始文件是否存在。
- 使用不同的名称复制文件。传输完成后重命名。