c# - IEnumerable到一个大流或 MemoryStream
问题描述
我有 IEnumerable 流。如何将其转换为一个大的 MemoryStream 或字节 []。我希望流中的所有流都附加到一个大流/内存流中。通过迭代所有流,我们遇到了某些性能问题。我正在寻找最佳解决方案。
using (var ms = new MemoryStream())
{
foreach (var stream in streams)
{
stream.CopyTo(ms);
}
byteData = ms.ToArray();
}
谢谢
解决方案
复制从当前流中的当前位置开始,复制操作完成后不会重置目标流的位置。
var list = new List<Stream>()
{
new MemoryStream(new byte[] {1, 2, 3, 4}),
new MemoryStream(new byte[] {5, 6, 7, 8}),
new MemoryStream(new byte[] {9, 10, 11, 12})
};
var result = new MemoryStream();
foreach (var stream in list)
stream.CopyTo(result);
var array =result.ToArray();
Console.WriteLine(string.Join(", ", array));
输出
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
推荐阅读
- r - 高效的 R 光栅代数
- python - Python运行线程时丢失数据
- python - 从 URL 更新 Pandas 数据框,但没有列,每分钟更新一次,而不是每 60 秒更新一次
- php - PHP AJAX 实时搜索 - 放置 GIF 加载器图标
- java - 反应性 Java Webflux 请求在 60 秒后终止
- python - MYSQL select 只选择字符而不是名称
- jquery - 如何不断检查可见图像的高度?
- vue.js - 在 Vue CLI 3 中从原始图像创建 webp 图像(作为替代版本)
- react-native - react-native-flexi-radio-button onselect 不起作用
- javascript - 使用 jQuery 更改多个标签的填充颜色