如何将一个流的内容复制到另一个?

安东

将一个流的内容复制到另一个流的最佳方法是什么?有标准的实用程序方法吗?

缺口

从.NET 4.5开始,有Stream.CopyToAsync方法

input.CopyToAsync(output);

这将返回一个Task可以在完成时继续进行的操作,如下所示:

await input.CopyToAsync(output)

// Code from here on will be run in a continuation.

请注意,根据调用的位置,后面CopyToAsync的代码可能会或可能不会在调用它的同一线程上继续。

SynchronizationContext调用时被抓获await将决定线程的延续将上执行。

此外,此调用(这是一个可能会更改的实现细节)仍会按顺序进行读写操作(它不会浪费线程阻塞I / O完成)。

从.NET 4.0开始,有Stream.CopyTo一种方法

input.CopyTo(output);

对于.NET 3.5及更低版本

框架中没有任何东西可以帮助实现这一点。您必须手动复制内容,如下所示:

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[32768];
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write (buffer, 0, read);
    }
}

注1:此方法将允许您报告进度(到目前为止已读取x字节...)
注2:为什么使用固定缓冲区大小而不是input.Length因为该长度可能不可用!文档

如果从Stream派生的类不支持查找,则对Length,SetLength,Position和Seek的调用将引发NotSupportedException。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将一个ArrayList的内容复制到另一个?

如何将工作表内容复制到另一个工作表?

如何将引用的内容复制到另一个stl向量?

如何将一个DataGridview中的内容复制到另一个DataGridview

如何将一个画布的内容本地复制到另一个画布

如何将内容从一个单元复制到另一个单元

如何将一个2d数组的内容复制到另一个?(VBA)

如何将一个Word文档的内容复制到另一个Word文档中?

如何将一个迭代器复制到另一个?

如何将一个Google文档复制到另一个

如何将1个pytest.mark内容复制到另一个

如何将1个特定的提交复制到另一个分支?

将一个指针内容复制到另一个

如何将目录(文件夹及其内容)复制到另一个目录?

如何将SVG元素的内容复制到另一个SVG元素并保持同步

生成构建后如何将Angular dist内容复制到另一个位置?

如何将字典的内容复制到另一个字典以在之后清除原始字典

如何将USB(闪存)驱动器的内容自动复制到另一个目录?

如何使用 sed 将文件内容复制到另一个特定行号

如何将ElasticSearch字段复制到另一个字段

如何将Maven参数复制到另一个工作区?

如何将 pandas 嵌套列复制到另一个 DF?

如何将文本文件复制到另一个文件?

如何将文件复制到Java 8中的另一个目录?

如何将数组值复制到另一个数组

如何将多次出现的DS复制到另一个DS RPG

如何将数据从numpy数组复制到另一个

如何将插件的结果复制到另一个项目?

如何将数字的格式复制到另一个数字?