答案 0 :(得分:1)
SftpFileStream看起来像支持FileMode.Append。我正在尝试这种方法来恢复文件传输:
private static void WriteOrResumeRemoteFile(SftpClient remoteHost, string remoteFileName, FileStream localFileStream)
{
using (SftpFileStream remoteStream = remoteHost.Open(remoteFileName, FileMode.Append))
{
byte[] buffer = new byte[409600];
int bytesRead;
if (remoteStream.Length > 0)
{
localFileStream.Seek(remoteStream.Length, SeekOrigin.Begin);
}
bytesRead = 1;
while (bytesRead > 0)
{
DateTime timeBeforeRead = DateTime.Now;
bytesRead = localFileStream.Read(buffer, 0, 409600);
if (bytesRead > 0)
{
remoteStream.Write(buffer, 0, bytesRead);
long estimatedMsRemain = Convert.ToInt64(Convert.ToDouble(localFileStream.Length - localFileStream.Position) * Convert.ToDouble((DateTime.Now - timeBeforeRead).Ticks) / Convert.ToDouble(bytesRead));
Debug.WriteLine(localFileStream.Position + " total bytes written (" + (Convert.ToDouble(localFileStream.Position) / Convert.ToDouble(localFileStream.Length)).ToString("p") +
", ETR: " + (new TimeSpan(estimatedMsRemain)).ToString() + ")");
}
}
remoteStream.Close();
}
}