在使用 .NET CF 的 Windows CE 设备上。我正在通过来自 REST 服务的流接收一个大文件 (12MB)。
这个大文件是 base64 格式,但它有两个小细节,用双引号 ( ) 包围的内容"
和每 N 个字符有一个\\n
(不是换行符\n
,而是实际的 2 个文字字符)。所以我需要做的是,删除引号,\\n
或者用实际的换行符替换它们。并且还从base64格式转换。
这是我拥有的代码:
var input = ApplicationContext.restProxy.GetData();
using (StreamReader sr = new StreamReader(input))
{
StringBuilder sb = new StringBuilder();
char[] buffer = new char[32];
while (sr.Read(buffer, 0, 32) > 0)
{
var s = new string(buffer);
s = s.Replace("\\n", "\n");
s = s.Trim('"');
sb.Append(s);
}
byte[] fileBytes = Convert.FromBase64String(sb.ToString());
}
但是有了这段代码,我要么有一个OutOfMemoryException
,要么FormatException
当我调用Convert.FromBase64String
.
一些输入数据具有以下格式:
"U1FMaXRlIGZvcm1hdCAzAAQAAQEAQCAgAAAABAAAI2oAAAAAAAAAAAAAAAQAAAABAAAAAAAAAAAA\\nAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAC3iGgUAAAABA/sAAAAaSQP7\\nApsA0wDTAAAAAAAAAAAAAAAAAAAAAAAAAAA ...
如何在不填满设备内存的情况下进行这些操作,或者结果字符串的格式有什么问题?