如何将 MemoryStream 写入字节 [] [重复]
Posted
技术标签:
【中文标题】如何将 MemoryStream 写入字节 [] [重复]【英文标题】:How can I write MemoryStream to byte[] [duplicate] 【发布时间】: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()”。在那里你得到字节[] 这对您有帮助吗***.com/questions/221925/… ? @yan.kun 关闭的原件在关闭时只有第一行。此后,他添加了更多信息,并且出于某种原因发布了此副本。 【参考方案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;
【讨论】:
以上是关于如何将 MemoryStream 写入字节 [] [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 StreamWriter 写入 MemoryStream 返回空