gpt4 book ai didi

Java:检查文件是否已使用 SFTP 完全复制

转载 作者:行者123 更新时间:2023-11-30 08:05:10 25 4
gpt4 key购买 nike

我有一个轮询器每 35 秒在某个目录上运行一次。这些文件通过 SFTP 服务器放置在该目录中。问题是每当轮询与复制文件的时间发生冲突时。它还会选择尚未完全复制的不完整文件。

我们能否知道一个文件的状态是复制模式还是复制模式?

最佳答案

文件观察者“知道”文件已完全传输的常用策略有几种

  1. 按时间间隔轮询,如果文件大小在一个时间间隔内没有变化,则将文件视为已完全传输。例如每 1 分钟观察一次文件是否存在。看到文件存在后,每 5 秒监控一次它的大小。如果文件大小在 30 秒内保持不变,则将其视为已完全传输。

  2. 让传输过程在文件传输后创建一个标记文件。例如完成传输文件 FOO.txt 后,创建一个空的 FOO.txt.tag。您的文件观察器将检查 FOO.txt.tag 是否存在,一旦存在,您就知道 FOO.txt 已完全传输

  3. 在某些特殊情况下,文件具有特殊格式(例如特殊的页脚行),然后您的文件观察器可以轮询文件并查看最后几行,并查看它们是否与所需的模式匹配

每种方法都有其优缺点:

  1. 方法 1 对传输过程的影响最小。有时文件由第 3 方传输,您几乎无法告诉他们像方法 2 中那样创建标记文件。但是您可以看出这种方法不是 100% 可靠的,尤其是在网络不佳的情况下。
  2. 方法 2 是最可靠的。但是,如前所述,在某些情况下您无法控制传输过程
  3. 方法三只适用于特殊情况

选择适合自己的

关于Java:检查文件是否已使用 SFTP 完全复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com