繁体   English   中英

如何确定FTP文件夹中的文件最近被覆盖的时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM