gpt4 book ai didi

C# FTP 获取今天添加的文件

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:57 27 4
gpt4 key购买 nike

我有一个FTP,我想知道今天添加的文件。(在我的业务规则中,文件没有更新,因此可以添加文件,然后根本无法修改或删除)。

我试过这个:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://172.28.4.7/");
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("{0} {1}", "ftp://172.28.4.7/", response.LastModified);
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

但是,正如预期的那样,在控制台中我得到了上次修改的日期。

你能帮我知道最后添加的文件吗?

最佳答案

您必须检索远程文件的时间戳才能选择您想要的文件(今天的文件)。

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

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


或者,您可以使用支持现代 MLSD 命令或可以在给定时间限制下直接下载文件的第 3 方 FTP 客户端实现。

例如WinSCP .NET assembly同时支持 MLSDtime constraints .

甚至还有一个针对您的特定任务的示例:How do I transfer new/modified files only?
该示例适用于 PowerShell,但很容易转换为 C#:

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

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

// Download today's times
TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "*>=" + DateTime.Today.ToString("yyyy-MM-dd");
session.GetFiles(
"/remote/path/*", @"C:\local\path\", false, transferOptions).Check();
}

(我是 WinSCP 的作者)

关于C# FTP 获取今天添加的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com