我有由 DataContractSerializer 生成的原始 XML 的内存流。这个字符串可以很长,并生成 60mb+ 的文件。然后我将其读入字符串,然后以 UTF8 字节编码,然后转换为 base 64 字符串。这是一个代码片段:
// serialize to a memory stream.
rawXML = new MemoryStream();
dcs = new DataContractSerializer(vToWrite.GetType(),
null, 2147483647, false, false, null, new ClassResolver());
dcs.WriteObject(rawXML, vToWrite);
rawXML.Seek(0, SeekOrigin.Begin);
// read the stream into a raw string of XML
sr = new StreamReader(rawXML);
xmlString = sr.ReadToEnd();
rawXML.Close();
sr.Close();
// encode into base64
//bytesToEncode = Encoding.UTF8.GetBytes(xmlString);
//encodedText = Convert.ToBase64String(bytesToEncode);
// write string out
writer = File.CreateText(fullPath + "Module" + i + "D" +
historicDataCount + ".bin");
writer.Write(Convert.ToBase64String(
Encoding.UTF8.GetBytes(xmlString)));// (encodedText);
writer.Close();
// end save mod day //
我遇到的问题是,有时我在将流读入 xmlString 或使用流编写器写出字符串时遇到内存不足异常(顺便说一句,这就是“编写器”)。
我不太确定如何解决这个问题。我认为也许读取和转换“块”中的原始流可能是前进的方向,但我不确定这将如何影响文件的读回。