Как мне преобразовать поток памяти в текст? - PullRequest
1 голос
/ 22 июля 2010

Я использую tcpstream и скопировал данные в память.Теперь я хотел бы преобразовать его в текст (в кодировке UTF-8).Я пробовал разные способы и сделал flush (), но я не мог понять это.Я попытался использовать его в сочетании с StreamReader безуспешно (я получаю пустую строку).

Ответы [ 2 ]

16 голосов
/ 22 июля 2010

Просто получите данные из MemoryStream и расшифруйте их:

string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());

Вполне вероятно, что вы получите пустую строку, потому что вы читаете из MemoryStream без сброса ее позиции. Метод ToArray получает все данные независимо от того, где находится текущая позиция.

Если перед тем, как поместить его в MemoryStream, это будет байтовый массив, вы можете просто использовать его напрямую.

5 голосов
/ 22 июля 2010
using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
    ms.Position = 0;
    Console.WriteLine(reader.ReadToEnd());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...