如何在FTP文件夹中最近覆盖文件时如何判断?

时间:2009-05-08 14:55:43

标签: c# windows-services directory

我正在编写一个Windows服务,需要从本地计算机上的FTP文件夹中获取文件并解析该文件中的数据,然后将其推送到外部源。该文件将在某个时间从某个其他方上传到FTP文件夹,我无法预测该文件何时上传。我需要该服务能够扫描FTP文件夹并识别文件最近何时上传到服务器,并开始解析过程。

我需要知道.NET中是否有某种方法可以检测文件放入目录的时间。

关于这个here,有一个类似的问题,但它不是关于编写Windows服务。此外,解决方案似乎是监视目录本身,但我使用DirectoryInfo类测试了这个想法,它在查看LastWriteTime属性时不起作用。当我复制并替换目录中的文件时,目录的时间不会改变。

注意:我不能依赖文件上的创建/修改时间戳,因为我不知道对方是如何生成这些文件的。

2 个答案:

答案 0 :(得分:3)

使用FileSystemWatcher。这将抛出一个你可以处理的“改变”(或者甚至是“我相信的”创造的“)事件。在开始使用之前,您需要小心确保文件已完全写入,但这应该让您指向正确的方向。

编辑:关于约瑟夫的问题,这是一个静态的方法,我在实用程序类中保留了这样的场合:

public static bool FileComplete(string filePath)
        {
            try
            {
                File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
                return true;
            }
            catch { return false; }
        }

然后我在实际文件处理之前只是一个While(!FileComplete(foo)){}。

答案 1 :(得分:0)