我们有一个C#Windows服务轮询一个等待FTP文件发布的文件夹.为了避免在文件仍被写入时使用该文件,我们首先尝试锁定文件,但是,似乎有在创建FTP文件之后但在写入文件之前我们获取文件锁定的情况,因此我们最终打开一个空文件.
有没有可靠的判断FTP是否完整?
您可以在上传之前更改文件名,然后在完成后重命名.那样它看起来好像直到完成才存在.
我见过的一种做法是你传输两个文件,一个是实际文件,然后是另一个我们可以调用.done文件的文件.理想的是,只要您看到.done文件就知道第一个文件应该完成.
其他选项包括观察文件进行修改并等待一段时间没有修改.当然这不是完全证据.
编辑Kyle明确指出,在.done文件中添加校验和和/或指示第一个文件的大小是对边缘情况的良好保护.