【问题标题】:How can I write MemoryStream to byte[] [duplicate]如何将 MemoryStream 写入字节 [] [重复]
【发布时间】:2013-01-04 18:32:56
【问题描述】:

可能重复:
Creating a byte array from a stream

我正在尝试在内存中创建文本文件并将其写入byte[]。我该怎么做?

public byte[] GetBytes()
{
    MemoryStream fs = new MemoryStream();
    TextWriter tx = new StreamWriter(fs);

    tx.WriteLine("1111");
    tx.WriteLine("2222");
    tx.WriteLine("3333");

    tx.Flush();
    fs.Flush();

    byte[] bytes = new byte[fs.Length];
    fs.Read(bytes,0,fs.Length);

    return bytes;
}

但由于数据长度问题,它不起作用

【问题讨论】:

  • MemoryStream 类型的对象具有属性“ToArray()”。在那里你得到字节[]
  • 这对您有帮助吗stackoverflow.com/questions/221925/…
  • @yan.kun 关闭的原件在关闭时只有第一行。此后,他添加了更多信息,并且出于某种原因发布了此副本。

标签: c# stream


【解决方案1】:

怎么样:

byte[] bytes = fs.ToArray();

【讨论】:

    【解决方案2】:
    byte[] ObjectToByteArray(Object obj)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            BinaryFormatter b = new BinaryFormatter();
            b.Serialize(ms, obj);
            return ms.ToArray();
        }
    }
    

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      public byte[] GetBytes()
      {
      MemoryStream fs = new MemoryStream();
      TextWriter tx = new StreamWriter(fs);
      
      tx.WriteLine("1111");
      tx.WriteLine("2222");
      tx.WriteLine("3333");
      
      tx.Flush();
      fs.Flush();
      byte[] bytes = fs.ToArray();
      return bytes;
      }
      

      【讨论】:

      • +1。请注意,使用using 而不是Flush 更安全。还需要一些不寻常的代码才能在 Dispose 之后访问 MemoryStream - 需要在 using (ms) 之前创建 MemoryStream ...
      【解决方案4】:
          public byte[] GetBytes()
          {
              MemoryStream fs = new MemoryStream();
              TextWriter tx = new StreamWriter(fs);
      
              tx.WriteLine("1111");
              tx.WriteLine("2222");
              tx.WriteLine("3333");
      
              tx.Flush();
              fs.Flush();
      
              fs.Position = 0;
      
              byte[] bytes = new byte[fs.Length];
              fs.Read(bytes, 0, bytes.Length);
      
              return bytes;
          }
      

      【讨论】:

        猜你喜欢
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        • 1970-01-01
        • 2015-12-01
        • 2012-09-22
        • 1970-01-01
        相关资源
        最近更新 更多