首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSH.NET恢复文件传输

使用SSH.NET恢复文件传输
EN

Stack Overflow用户
提问于 2017-03-19 23:43:24
回答 1查看 751关注 0票数 2

有没有内置的方法可以使用SSH.NET恢复中断的文件传输?我在WinSCP .NET API中找到了这样一个选项,但在SSH.NET中找不到它。

EN

回答 1

Stack Overflow用户

发布于 2017-05-25 23:59:36

SftpFileStream看起来支持FileMode.Append。我正在试验这种恢复文件传输的方法:

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42888577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档