我想使用ruby代码访问文件夹中的文件。但是这些文件将被下载到文件夹中。所以每次都会下载新文件。但是当我访问这些文件中的任何一个时,如何知道该文件是否已完全下载而不是部分文件。有没有办法在Ruby编程中找到它?
答案 0 :(得分:0)
使用flock获取文件的独占锁定。如果无法获得,还有其他东西可以写入它。我不是100%确定它在所有文件系统/操作系统上是如何工作的。
您还可以每隔几秒轮询一次文件以查看大小是否发生变化,但这看起来很糟糕。
答案 1 :(得分:0)
任何更改的轮询文件大小确实有些笨拙,但似乎是一种使用相当多的方法。
或者,您是否可以控制文件的下载方式?如果是这样,某些额外的“存根”文件可能就是答案:
下载主要请求的文件(例如“MyFile.zip”)。当在服务器端完成请求时,在其后链接另一个文件 - 例如。 “MyFile.follow”(请注意,这不一定是一个完整的文件,它可以只是某种“存根”)。
对于每个下载的文件,您的Ruby代码会检查其随附的“follow”文件是否存在。如果它在那里,则假设下载的文件已完成。
当然,这不是万无一失的,但是如果没有根据某种“已知”文件大小的表格检查下载的文件大小,我不确定你还能做什么。