[英]How can I tell when a file has been recently overwritten inside an FTP folder?
我正在编写Windows服务,该服务需要从本地计算机上的FTP文件夹中提取文件,然后解析该文件中的数据,然后将其推送到外部源。 该文件会在某个时候从另一方上传到FTP文件夹,我无法预测文件的上传时间。 我需要该服务,以便能够扫描FTP文件夹并识别文件最近何时上传到服务器,并启动解析过程。
我需要知道.NET中是否有某种方法可以检测何时将文件放入目录中。
有一个在SO这个类似的问题在这里 ,但它不是在关于编写windows服务。 另外,解决方案似乎是监视目录本身,但是我使用DirectoryInfo类测试了该想法,并且在查看LastWriteTime属性时不起作用。 当我复制和替换目录中的文件时,目录的时间不会更改。
注意:我不能依靠文件上的创建/修改时间戳,因为我不知道对方是如何生成这些文件的。
使用FileSystemWatcher。 这将引发您可以处理的“ Changed”(甚至我相信是“ created”)事件。 在开始使用文件之前,您需要小心确保文件已完全写入,但这应该使您朝着正确的方向发展。
编辑:关于约瑟夫的问题,在这种情况下,我在实用程序类中保留了一个静态方法:
public static bool FileComplete(string filePath) { try { File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None); return true; } catch { return false; } }
然后,在实际文件处理之前,我只是While(!FileComplete(foo)){}。
看一下FileSystemWatcher 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.