我正在使用ssh.net 库来执行 SFTP 操作以处理大型数据文件 ( >=500MB )
我对如何以非阻塞方式返回数据有疑问。
方法签名是好的,当ftpClient.DownloadFile()
写入文件时,或者如果有某种方法可以实例化流,但是当我想在不阻塞的情况下返回流时如何使用它时遇到问题。
到目前为止,我看到的所有示例都将下载内容写入Filestream
. 没有什么只是返回一个流
使用 .Net 的内置 FTP,您只需使用response.GetResponseStream()
,它就会流回数据,而不会阻塞。
在 return 语句中使用它的唯一方法是写入临时文件。但这导致它成为阻塞操作。
var tmpFilename = "temp.dat";
int bufferSize = 4096;
var sourceFile = "23-04-2015.dat";
using (var stream = System.IO.File.Create(tmpFilename , bufferSize, System.IO.FileOptions.DeleteOnClose))
{
sftpClient.DownloadFile(sourceFile, stream);
return stream;
}
我不希望它阻塞,而是流回数据。
我也想避免创建一个临时文件。
是否有替代实现使其流回数据?
或者是否有我可以实例化的替代流(除了MemoryStream
),它适用于大文件?