现在举个例子,假设我的ftp文件夹名为FTPFolder
,我的本地文件夹名为LOCALFolder
。这两个文件夹目前完全相同。
让我们说两个文件夹都包含一个名为text.txt
的文件。
现在我想做什么:
如果我更改了FTP上的test.txt
,我怎么能在C#中检测到它?
获取所有本地文件和所有FTPfiles
然后比较它们太长了。有没有人有另一种方法呢?
基本上,目标是下载FTP上与本地不同的所有文件。
答案 0 :(得分:0)
以下是可能的选项:
检查校验和 - 最好和最快的方式,但首先可能不存在文件。
检查文件大小及其时间戳。不理想,但可能有效。
除此之外,我不认为你能做任何事情,而且本身并不是C#问题。
答案 1 :(得分:0)
将本地文件夹与FTP文件夹同步的常用方法是比较文件修改时间。
假设您使用的是FtpWebRequest
.NET类,实际上这并非易事。它没有任何标准方法来检索文件修改时间。
请参阅Retrieving creation date of file (FTP)。
更好的方法是使用文件校验和,但这几乎不可能 请参阅FTP: copy, check integrity and delete。
使用能够更好地支持检索修改时间的第三方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的作者)