如何从SFTP服务器下载过去60秒内创建的所有txt文件


static void Main(string[] args)
{
var fileSystemWatcher = new FileSystemWatcher(@"filepath")
{
Filter = "*.txt",
NotifyFilter = NotifyFilters.FileName,
EnableRaisingEvents = true
};
fileSystemWatcher.Created += OnActionOccurOnFolderPath;
Console.ReadLine();
}
public static void OnActionOccurOnFolderPath(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.ChangeType);
Console.WriteLine(e.Name);
Upload.upload();
}

这会将在指定路径中创建的任何txt文件上载到SFTP服务器。

服务器将生成一个关于上传和文件处理是否成功的报告。这通常需要2-3分钟。然后,我每隔60秒用计时器检查一次是否创建了新的报告。

首先,我得到了目录中的文件列表:

RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);

在这里我选择最新的文件:

RemoteFileInfo latest =
directoryInfo.Files
.Where(file => !file.IsDirectory)
.OrderByDescending(file => file.LastWriteTime)
.FirstOrDefault();

我继续下载该文件以检查它的一些参数。

session.GetFileToDirectory(latest.FullName, localPath);

但每当我上传多个文件时,都会有多个报告,但我只能下载最新的一个。

我的意图是,我想下载在过去60秒内创建的所有内容。这需要在仍然可以保证上传新数据的同时完成。

因此,我认为上面用于查找latest的代码需要以某种方式进行更改。

要下载在最后一分钟创建的文件,请使用文件掩码时间约束>=60S:

session.GetFilesToDirectory(remoteDirectory, localDirectory, "*>=60S").Check();

最新更新