对监听到的文件下载时,下载的文件不完整如何解决?

1.公司有个项目,监听ftp服务器下的文件夹,有文件进来时,就把文件下载后进行处理,使用的监听插件为commons-vfs2。
2.目前问题是有文件进入ftp服务器文件夹时,监听到了文件的出现,因为文件比较大,完全进入监听文件夹需要一定时间,此时客户端代码开始下载文件,造成下载的文件不完整。
3.之前代码为客户端下载文件时,若监听文件夹下的文件不完整,就会抛出异常,在异常中递归的调用下载方法,直到文件完整下载。
4.现在不知怎么回事,客户端下载文件时,监听文件夹下文件不完整,不抛出异常了,造成文件下载不完整。

可以获取下文件的大小
https://blog.csdn.net/sand_clock/article/details/70860923
和你下载的比较下

方法1、等待文件写入完成,然后再处理该文件,就是通过监听文件状态,等待一段时间在判断一次,未改变则文件写完,否则再等待
方法2、上传时使用一个不同的临时文件,例如.temp后缀的文件,等读写完成之后改成目标文件名

目标就是,确认文件完整后客户端再开始下载

监听文件及其完整性,在不调用打开文件函数和试错的前提下,比较难,近似驱动层面的开发。如果文件的上传是自己研发的程序在做,那么就容易一些,上传时首先上传到临时目录,上传完毕后copy到目标目录。