如何从我的 SFTP 服务器下载过去 60 秒内创建的所有 txt 文件?
How can I download all txt files that has been created in the last 60 seconds from my SFTP Server?
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);
我这里是select最新的文件:
RemoteFileInfo latest =
directoryInfo.Files
.Where(file => !file.IsDirectory)
.OrderByDescending(file => file.LastWriteTime)
.FirstOrDefault();
我继续下载文件以检查其中的一些参数。
session.GetFileToDirectory(latest.FullName, localPath);
但是每当我上传多个文件时,就会有多个报告,但我只能下载最新的一个。
我的意图是下载过去 60 秒内创建的所有内容。
这需要在保证新数据上传的情况下完成。
所以我认为上面用于查找 latest
的代码需要以某种方式更改。
要下载最后一分钟创建的文件,请使用 file mask time constraint >=60S
:
session.GetFilesToDirectory(remoteDirectory, localDirectory, "*>=60S").Check();
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);
我这里是select最新的文件:
RemoteFileInfo latest =
directoryInfo.Files
.Where(file => !file.IsDirectory)
.OrderByDescending(file => file.LastWriteTime)
.FirstOrDefault();
我继续下载文件以检查其中的一些参数。
session.GetFileToDirectory(latest.FullName, localPath);
但是每当我上传多个文件时,就会有多个报告,但我只能下载最新的一个。
我的意图是下载过去 60 秒内创建的所有内容。 这需要在保证新数据上传的情况下完成。
所以我认为上面用于查找 latest
的代码需要以某种方式更改。
要下载最后一分钟创建的文件,请使用 file mask time constraint >=60S
:
session.GetFilesToDirectory(remoteDirectory, localDirectory, "*>=60S").Check();