Stream.CopyTo不复制任何流数据

赫多

我在将数据从拷贝MemoryStreamStream里面时遇到问题ZipArchive以下内容无效-仅返回114个字节:

GetDataAsByteArray(IDataSource dataSource)
{
    using (var zipStream = new MemoryStream())
    {
        using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
        {
            var file = archive.CreateEntry("compressed.file");
            using (var targetStream = file.Open())
            {
                using (var sourceStream = new MemoryStream())
                {
                    await dataSource.LoadIntoStream(sourceStream);
                    sourceStream.CopyTo(targetStream);
                }
            }
        }
        var result = zipStream.ToArray();
        zipStream.Close();
        return result;
    }
}

但是,使用下面的“复制”过程实现,将所有1103字节写入数组/内存流:

await targetStream.WriteAsync(sourceStream.ToArray(), 0, (int) sourceStream.Length);

我想知道为什么CopyTo产量更少的字节。我也Int32对第二种实现中的强制转换感到不安全

仅供参考:比较字节数组:看起来第一个实现只写了zip文件的页眉和页脚。

汉斯·帕桑特

Stream.CopyTo()从流的当前Position开始复制。在调用LoadIntoStream()之后,该值可能不为0。由于它是MemoryStream,因此您可以像这样简单地对其进行修复:

    await dataSource.LoadIntoStream(sourceStream);
    sourceStream.Position = 0;
    sourceStream.CopyTo(targetStream);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Stream.CopyTo()不会复制特定长度的数据

来自分类Dev

cudaMemcpy不复制任何数据

来自分类Dev

在.NET中执行stream.CopyTo(anotherStream)时如何获得复制百分比?

来自分类Dev

在.NET中执行stream.CopyTo(anotherStream)时如何获得复制百分比?

来自分类Dev

stream.close是否关闭任何封闭的流

来自分类Dev

Stream.CopyTo-如何获取发送的字节?

来自分类Dev

Glusterfs不复制数据

来自分类Dev

Glusterfs不复制数据

来自分类Dev

TwiML <Stream>不会持续流

来自分类Dev

Twitter Stream API损坏的数据

来自分类Dev

FFmpeg元数据不复制

来自分类Dev

绑定数据而不复制

来自分类Dev

分析声音流而不复制它

来自分类Dev

我应该在Stream.CopyTo之前使用Stream.Flush吗?

来自分类Dev

我应该在Stream.CopyTo之前使用Stream.Flush吗?

来自分类Dev

流stream =缺少WriteableBitmap.PixelBuffer.AsStream()

来自分类Dev

Kinesis Stream和DynamoDB流之间的区别

来自分类Dev

使用Nancy流(SqlFile-)Stream

来自分类Dev

带有进度条报告的stream.copyto

来自分类Dev

stream.CopyTo .netCore2 后锁定文件

来自分类Dev

硬盘被识别,但 dd 不复制任何内容

来自分类Dev

Spark Stream kafka 流 - 返回的 rdd 在 foreachRDD 中不做任何事情

来自分类Dev

限制JS Get Stream Library返回的数据

来自分类Dev

无需Stream Analytics的PowerBI实时数据

来自分类Dev

Scala ZIO Stream数据类型

来自分类Dev

StreamBuilder无法按预期从Stream读取数据

来自分类Dev

从Icecast-audio-stream捕获元数据

来自分类Dev

Azure Stream Analytics作业会截断数据

来自分类Dev

限制JS Get Stream Library返回的数据