в C # может применяться

сейчас я использую XmlTextWriter для преобразования объекта MemoryStream в строку. Но я не хочу знать, существует ли более быстрый способ сериализации потока памяти в строку.

Я следую приведенному здесь коду для сериализации -http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp

отредактированный

Поток в строку

ms.Position = 0;
using (StreamReader sr = new StreamReader(ms))
{
    string content = sr.ReadToEnd();
    SaveInDB(ms);
}

Строка в поток

string content = GetFromContentDB();
byte[] byteArray = Encoding.ASCII.GetBytes(content);
MemoryStream ms = new MemoryStream(byteArray); 
byte[] outBuf = ms.GetBuffer(); //error here
 Michael Freidgeim23 мар. 2016 г., 13:26

Ответы на вопрос(2)

Решение Вопроса
using(MemoryStream stream = new MemoryStream()) {
   stream.Position = 0;
   var sr = new StreamReader(stream);
   string myStr = sr.ReadToEnd();
}

MemoryStream (байт []) конструктор.

Цитата MSDN:

Этот конструктор не предоставляет базовый поток. GetBuffer создает исключение UnauthorizedAccessException.

Вы должны использовать этоконструктор и установитьpubliclyVisible = true для того, чтобы использовать GetBuffer

 Stecya28 мая 2011 г., 15:06
Можете ли вы показать свой фрагмент кода?
 Matthew Steeples28 мая 2011 г., 15:28
Возможно глупый вопрос, но вы уверены, что поле базы данных достаточно велико? Работает ли преобразование, если вы храните его в памяти вместо БД?
 NLV28 мая 2011 г., 15:21
Обновили код в посте. Исходный поток памяти составляет около 95000 байт. Но после преобразования строки обратно в поток я получаю только 1900 байт.
 NLV28 мая 2011 г., 15:34
@ Мэтью У меня тоже есть такое же сомнение. Я сейчас занимаюсь этим, так как использую библиотеку, которая не предоставляет мне схему базы данных.
 NLV28 мая 2011 г., 14:50
Боюсь, это не дает строку для записи. После того, как я пытаюсь преобразовать строку обратно в поток памяти, она выдает сообщение об ошибке «Внутренний буфер MemoryStream не доступен». пока делаю memorystream.GetBuffer ().

Dim TempText = System.Text.Encoding.UTF8.GetString (TempMemoryStream.ToArray ())

в C # может применяться

Ваш ответ на вопрос