C#-从FTP下载上次修改日期更高的文件

蓝色游戏

我有一些文件的FTP服务器。我在本地目录(在中C:\有相同的文件

当我运行该程序时,我希望它搜索FTP服务器中所有具有最后修改时间戳的文件,这些文件晚于本地目录中的同一文件(同名),然后下载所有已建立的文件。

有人可以给我帮助或小费吗?我将感谢所有答案!

马丁·普里克里(Martin Prikryl)

不幸的是,没有真正可靠,有效的方法使用.NET框架提供的功能来检索时间戳,因为它不支持FTPMLSD命令。MLSD命令以标准化的机器可读格式提供远程目录列表。该命令和格式由RFC 3659标准化

您可以使用.NET框架支持的替代方法:

  • ListDirectoryDetails方法(FTPLIST命令)检索目录中所有文件的详细信息,然后处理FTP服务器特定的详细信息格式(* nix格式类似于ls* nix命令,这是最常见的方法,缺点是该格式可能会转换为时间,对于较新的文件,使用“ May 8 17:48”格式,对于较旧的文件,使用“ Oct 18 2009”格式)。

    示例:
    DOS / Windows格式:解析WebRequestMethods.Ftp.ListDirectoryDe​​tails FTP响应的C#类
    * nix格式:解析FtpWebRequest ListDirectoryDe​​tails行

  • 单独获取每个文件时间戳GetDateTimestamp方法(FTPMDTM命令)。优点是RFC 3659响应进行了标准化YYYYMMDDHHMMSS[.sss]缺点是您必须为每个文件发送一个单独的请求,这可能会非常低效。

    const string uri = "ftp://example.com/remote/path/file.txt";
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    Console.WriteLine("{0} {1}", uri, response.LastModified);
    

或者,您可以使用支持现代MLSD命令的第三方FTP客户端实现

例如,WinSCP .NET程序集支持该功能。

您可以使用Session.ListDirectorySession.EnumerateRemoteFiles方法,并RemoteFileInfo.LastWriteTime在返回的集合中读取文件的。

甚至更简单,您可以使用Session.SynchronizeDirectories来使库自动下载(同步)已修改的文件:

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Ftp,
    HostName = "ftp.example.com",
    UserName = "user",
    Password = "mypassword",
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);

    // Synchronize files
    session.SynchronizeDirectories(
        SynchronizationMode.Local, @"d:\www", "/home/martin/public_html", false).Check();
}

WinSCP GUI可以为您生成代码模板

(我是WinSCP的作者)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

文件的上次修改日期为字符串C ++

来自分类Dev

如何获取目录的最后修改日期= textboxdate并获取此目录中的文件C#

来自分类Dev

本地文件的上次修改日期。的JavaScript

来自分类Dev

获取远程文件的上次修改日期

来自分类Dev

本地文件的上次修改日期。的JavaScript

来自分类Dev

实体上次修改日期

来自分类Dev

主页上次修改日期

来自分类Dev

如何从Hadoop序列文件中获取上次修改日期?

来自分类Dev

根据上次修改日期获取文件计数

来自分类Dev

上载文件时保留上次修改日期

来自分类Dev

如何从上次修改日期开始过滤文件

来自分类Dev

获取AppleScript中文件的上次修改日期

来自分类Dev

使用C#增量扫描新的/修改的FTP文件

来自分类Dev

C#从FTP AS400下载文件

来自分类Dev

C#:ftp上传成功,但下载的文件已损坏

来自分类Dev

更改日期格式C#

来自分类Dev

将已修改日期的属性存储在数组中,并将其逐行C#复制到另一个文本文件中

来自分类Dev

如何获取Javascript的上次修改日期

来自分类Dev

pysftp:如何更新上次修改日期

来自分类Dev

下载文件C#

来自分类Dev

如何使用上次修改日期而不是当前日期向文件添加时间戳

来自分类Dev

如何使用上次修改日期而不是当前日期向文件添加时间戳

来自分类Dev

PowerShell打开文件以仅写(用于Lock)并执行“触摸”操作,以更改文件的上次修改日期

来自分类Dev

Java-如何从按上次修改日期排序的文件夹中打开上次更新的文件?

来自分类Dev

如何更改C:\ $ RECYCLE.BIN的修改日期?

来自分类Dev

将文件的上次修改日期从UNIX转换为本地时区

来自分类Dev

如何基于PHP中的上次修改日期创建文件夹?

来自分类Dev

如何列出所有文件的大小和上次修改日期?

来自分类Dev

骆驼使用计划服务频繁检查文件的上次修改日期

Related 相关文章

  1. 1

    文件的上次修改日期为字符串C ++

  2. 2

    如何获取目录的最后修改日期= textboxdate并获取此目录中的文件C#

  3. 3

    本地文件的上次修改日期。的JavaScript

  4. 4

    获取远程文件的上次修改日期

  5. 5

    本地文件的上次修改日期。的JavaScript

  6. 6

    实体上次修改日期

  7. 7

    主页上次修改日期

  8. 8

    如何从Hadoop序列文件中获取上次修改日期?

  9. 9

    根据上次修改日期获取文件计数

  10. 10

    上载文件时保留上次修改日期

  11. 11

    如何从上次修改日期开始过滤文件

  12. 12

    获取AppleScript中文件的上次修改日期

  13. 13

    使用C#增量扫描新的/修改的FTP文件

  14. 14

    C#从FTP AS400下载文件

  15. 15

    C#:ftp上传成功,但下载的文件已损坏

  16. 16

    更改日期格式C#

  17. 17

    将已修改日期的属性存储在数组中,并将其逐行C#复制到另一个文本文件中

  18. 18

    如何获取Javascript的上次修改日期

  19. 19

    pysftp:如何更新上次修改日期

  20. 20

    下载文件C#

  21. 21

    如何使用上次修改日期而不是当前日期向文件添加时间戳

  22. 22

    如何使用上次修改日期而不是当前日期向文件添加时间戳

  23. 23

    PowerShell打开文件以仅写(用于Lock)并执行“触摸”操作,以更改文件的上次修改日期

  24. 24

    Java-如何从按上次修改日期排序的文件夹中打开上次更新的文件?

  25. 25

    如何更改C:\ $ RECYCLE.BIN的修改日期?

  26. 26

    将文件的上次修改日期从UNIX转换为本地时区

  27. 27

    如何基于PHP中的上次修改日期创建文件夹?

  28. 28

    如何列出所有文件的大小和上次修改日期?

  29. 29

    骆驼使用计划服务频繁检查文件的上次修改日期

热门标签

归档