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

编程入门 行业动态 更新时间:2024-10-27 14:20:55
本文介绍了Java:使用 SFTP 检查文件是否已完全复制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

I have a poller running on a certain directory every 35s. The files are placed in this directory through a SFTP server. The problem is whenever the polling conflicts with the time when a file is being copied. It picks the incomplete file also which is not yet copied completely.

我们可以知道一个文件是处于复制模式还是复制模式吗?

Can we know the status of a file whether it is in copying mode or copied mode?

推荐答案

文件观察者有几种常见的策略可以知道"一个文件已经完全传输

There are several common strategies for file watchers to "know" a file is completely transferred

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

  • Poll with time interval, and treat the file to be completely transferred if file size is not changing within an interval. e.g. watch for file existence every 1 minute. Once you see the file exists, monitor its size for every 5 seconds. If file size stays constant for 30 seconds, then treat it as completely transferred.

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

    Have the transfer process create a tagging file after file transfer. e.g. After it completed transferring the file FOO.txt, create an empty FOO.txt.tag. Your file watcher is going to check for existence of FOO.txt.tag and once it exists, you know FOO.txt has been completely transferred

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

    In some special cases that the file is having special format (e.g. a special footer line) then your file watcher can poll the file and see the last lines, and see if they match with the desired pattern

    每种方法都有其优点和缺点:

    Each method has its pros and cons:

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

    更多推荐

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

    本文发布于:2023-10-20 01:18:14,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1509401.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:文件   Java   SFTP

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!