как преобразовать System.IO.Stream в строку, а затем обратно в System.IO.Stream - PullRequest
28 голосов
/ 30 ноября 2010

У меня есть свойство Stream типа

public System.IO.Stream UploadStream { get; set; }

Как я могу преобразовать его в string и отправить на другую сторону, где я могу снова преобразовать его в System.IO.Stream?

Ответы [ 2 ]

65 голосов
/ 30 ноября 2010

Я не знаю, что вы подразумеваете под преобразованием потока в строку . И что за другая сторона ?

Чтобы преобразовать поток в строку, вам необходимо использовать кодировку. Вот пример того, как это можно сделать, если предположить, что поток представляет байты в кодировке UTF-8:

using (var reader = new StreamReader(foo.UploadStream, Encoding.UTF8))
{
    string value = reader.ReadToEnd();
    // Do something with the value
}
1 голос
/ 13 июля 2018

После некоторых поисков другие ответы на этот вопрос предполагают, что вы можете сделать это, не зная / не используя кодировку строки.Поскольку поток всего лишь байты, эти решения в лучшем случае ограничены.В этом решении рассматривается кодировка:

    public static String ToEncodedString(this Stream stream, Encoding enc = null)
    {
        enc = enc ?? Encoding.UTF8;

        byte[] bytes = new byte[stream.Length];
        stream.Position = 0;
        stream.Read(bytes, 0, (int)stream.Length);
        string data = enc.GetString(bytes);

        return enc.GetString(bytes);
    }

источник - http://www.dotnetfunda.com/codes/show/130/how-to-convert-stream-into-string

строка в поток - https://stackoverflow.com/a/35173245/183174

...