我需要在循环中附加大量字符串,这将创建一个非常长的字符串.
1GB应该足够长以存储字符串,因此我这样做:
var sb = new StringBuilder(1024 * 1024 * 1024);
但收到此错误
'System.OutOfMemoryException' was thrown
任何追加长串的建议?
我正在为MySQL数据库编写备份工具.这些工具将从数据库导出数据并写入文本文件.数据包含BLOB和TEXT数据类型.所以,期待很长的字符串.
这是代码:代码更新1
var conn = new MySqlConnection(Program.ConnectionString); var cmd = new MySqlCommand(); cmd.Connection = conn; conn.Open(); cmd.CommandText = selectSQL; MySqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { var sb = new StringBuilder(1024 * 1024 * 1024); for (int i = 0; i < rdr.FieldCount; i++) { if (sb.Length > 0) sb.AppendFormat(separator); if (rdr[i].GetType() == typeof(byte[])) { sb.AppendFormat(ConvertByteArrayToHexString((byte[])rdr[i])); } else sb.AppendFormat(rdr[i] + ""); } WriteToFile(sb.ToString()); } conn.Close();
recursive.. 6
使用文件流写入长文件.任何时候都不需要将完整的字符串保存在内存中.