How can I write MemoryStream to byte[]
Possible Duplicate:
Creating a byte array from a stream
号
我正在尝试在内存中创建文本文件并将其写入byte[]。我该怎么做?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 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/…?
- @关闭的原版严坤只有关闭时的第一行。从那以后,他又增加了更多的信息,而且——出于某种原因——发布了这个副本。
怎么样:
1
| byte[] bytes = fs.ToArray(); |
尝试以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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更安全。另外,还需要一些不寻常的代码,以便在释放后可以访问memorystream-需要在using (ms)之前创建memorystream…
1 2 3 4 5 6 7 8 9
| byte[] ObjectToByteArray (Object obj )
{
using (MemoryStream ms = new MemoryStream ())
{
BinaryFormatter b = new BinaryFormatter ();
b .Serialize(ms, obj );
return ms .ToArray();
}
} |
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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 ;
} |
。