首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从流创建字节数组

从流创建字节数组
EN

Stack Overflow用户
提问于 2008-10-21 21:42:55
回答 16查看 1M关注 0票数 995

从输入流创建字节数组的首选方法是什么?

这是我目前使用.NET 3.5的解决方案。

代码语言:javascript
复制
Stream s;
byte[] b;

using (BinaryReader br = new BinaryReader(s))
{
    b = br.ReadBytes((int)s.Length);
}

读写流的块还是个更好的主意吗?

EN

回答 16

Stack Overflow用户

发布于 2011-07-06 00:45:40

虽然Jon的答案是正确的,但他正在重写CopyTo中已经存在的代码。因此,对于.Net 4,使用桑迪普解决方案,但对于以前的.Net版本,使用Jon的答案。桑迪普的代码将通过使用"using“来改进,因为在许多情况下,CopyTo中的异常很可能发生,并且会使MemoryStream不会被处理。

代码语言:javascript
复制
public static byte[] ReadFully(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}
票数 813
EN

Stack Overflow用户

发布于 2010-04-13 22:54:01

我只想指出,如果你有一个MemoryStream,你已经有了memorystream.ToArray()

此外,如果您正在处理未知或不同子类型的流,并且可以接收MemoryStream,则可以在这些情况下使用上述方法,并仍然对其他情况使用可接受的答案,如下所示:

代码语言:javascript
复制
public static byte[] StreamToByteArray(Stream stream)
{
    if (stream is MemoryStream)
    {
        return ((MemoryStream)stream).ToArray();                
    }
    else
    {
        // Jon Skeet's accepted answer 
        return ReadFully(stream);
    }
}
票数 122
EN

Stack Overflow用户

发布于 2011-02-12 21:33:29

代码语言:javascript
复制
MemoryStream ms = new MemoryStream();
file.PostedFile.InputStream.CopyTo(ms);
var byts = ms.ToArray();
ms.Dispose();
票数 73
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/221925

复制
相关文章

相似问题

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