【问题标题】:Get modified files in FTP folder获取 FTP 文件夹中修改后的文件
【发布时间】:2017-07-08 11:28:23
【问题描述】:
  1. 我有一个本地文件夹,其中包含文件和目录 (>2000 文件)。
  2. 我将整个文件夹上传到我的 ftp 上。

例如,假设我的 ftp 文件夹名为 FTPFolder,而我的本地文件夹名为 LOCALFolder。这两个文件夹现在完全一样。

假设这两个文件夹都包含一个名为 text.txt 的文件。

现在我想做什么:

如果我更改 FTP 上的test.txt,我如何在 C# 中检测到它? 获取所有本地文件和所有FTPfiles 然后比较它们太长了。有人有其他方法吗?

基本上,目标是下载 FTP 上与相同文件不同但在本地的所有文件。

【问题讨论】:

    标签: c# .net ftp


    【解决方案1】:

    本地文件夹与 FTP 文件夹同步的常用方法是比较文件修改时间。

    假设您使用的是FtpWebRequest .NET 类,这实际上并不容易实现。它没有任何标准方法来检索文件修改时间。

    Retrieving creation date of file (FTP)

    最好使用文件校验和,但这几乎是不可能的。
    FTP: copy, check integrity and delete


    使用对检索修改时间有更好支持的第 3 方 FTP 客户端库会更容易。如果您使用支持开箱即用同步的 FTP 客户端库,那就更容易了。

    例如使用WinSCP .NET assembly,您可以使用Session.SynchronizeDirectories method

    // Setup session options
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "example.com",
        UserName = "user",
        Password = "mypassword",
    };
    
    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);
    
        // Synchronize files
        session.SynchronizeDirectories(
            SynchronizationMode.Local, @"C:\local\path", "/remote/path", false).Check();
    }
    

    WinSCP GUI 可以generate a code template for you

    (我是 WinSCP 的作者)

    【讨论】:

      【解决方案2】:

      以下是可能的选项:

      1. 检查校验和 - 最好和最快的方法,但它可能一开始就不存在于文件中。

      2. 检查文件的大小及其时间戳。不理想,但它可能会起作用。

      除此之外,我认为没有什么可以做的,而且这本身不是 C# 问题。

      【讨论】:

        猜你喜欢
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-02
        • 2014-10-28
        • 2021-10-25
        相关资源
        最近更新 更多