这是我当前的代码:
public void WriteXml(System.Xml.XmlWriter writer)
{
CloseConnection();
using (Stream source = File.Open(DataBaseFileName, FileMode.Open))
{
byte[] buffer = new byte[source.Length];
source.Read(buffer, 0, (int)source.Length);
writer.WriteString(Convert.ToBase64String(buffer));
}
OpenConnection();
}
这样做的目的是将数据库嵌入到一个XML文件中(该方法属于另一个被序列化的类中的字段的类)。问题是,每当数据库大小约为300MB时,我就会在byte[] buffer = new byte[source.Length];
行上得到一个OutOfMemory异常。所以我猜我需要在块上做它。但我不确定这是怎么回事。我认为这些块需要有特定的大小。此外,我认为Convert.ToBase64String
会在字符串的末尾添加两个"==“符号,所以我可能每次都要删除它们,直到最后一个。
发布于 2010-11-17 22:34:51
找到Base64流类:link text
发布于 2010-11-17 05:29:39
Base64将每个6位序列编码为一个字符。(因此名称: 2^6 = 64个可能的字符。)
因此,这样的字符恰好对齐到3个字节(24位)。
换句话说,块的大小必须是3: 3字节、6字节或300字节的倍数……
发布于 2010-11-17 02:04:44
base64将始终填充到4个字符的倍数。我认为只要你切进N*4大小的块,你就没问题。
https://stackoverflow.com/questions/4197337
复制相似问题