Как мога да напиша MemoryStream в байт []

Възможен дубликат:
Създаване на байтов масив от поток

Опитвам се да създам текстов файл в паметта и да го запиша 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;
}

Но не работи поради дължината на данните


person Polaris    schedule 21.01.2013    source източник
comment
Обект от тип MemoryStream има свойството ToArray(). Тук получавате байта []   -  person Tomtom    schedule 21.01.2013
comment
Това ще ви помогне ли stackoverflow.com /questions/221925/ ?   -  person Kaf    schedule 21.01.2013
comment
@yan.kun Затвореният оригинал имаше само първия ред, когато беше затворен. Оттогава той добави повече информация, както и - по някаква причина - публикува този дубликат.   -  person J. Steen    schedule 21.01.2013


Отговори (2)


Какво ще кажеш:

byte[] bytes = fs.ToArray();
person Gabe    schedule 21.01.2013

Опитайте следния код:

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;
}
person Tomtom    schedule 21.01.2013
comment
+1. имайте предвид, че използването на using вместо Flush е много по-безопасно. Също така изисква малко необичаен код за MemoryStream, за да бъде достъпен след Dispose - трябва да създадете MemoryStream преди using (ms)... - person Alexei Levenkov; 21.01.2013