我先用 StringBuilder 编写了下面的代码,然后遇到 Out Of Memory Exception,阅读相关问题并将其更改为 string += 但仍然收到相同的 OOM 错误。
我有 ~2100+ 个不同大小的文件,总共 ~200MB+。
由于限制,我不能使用附加模式文件访问。有什么建议吗?
const string myPath = @"C:\values\";
var files = Directory.EnumerateFiles(myPath).Select(Path.GetFileNameWithoutExtension);
var filesGrouped = files.Where(f => f.Length > 12).GroupBy(f => f.Substring(0, f.Length - 9)).OrderBy(f => f.Key).ToList();
filesGrouped.ForEach(fg =>
{
var myRows = string.Empty;
// download files
fg.ToList().ForEach(gf =>
{
string myFile;
string fileToRead = string.Format("{0}{1}.csv", myPath, gf);
using (var sr = new StreamReader(fileToRead)) myFile = sr.ReadToEnd();
//! OOM Error hits the line below
myRows += myFile + ControlChars.NewLine;
});
// upload new file
using (var sw = new StreamWriter(myPath + fg.Key + ".csv", false, Encoding.UTF8)) sw.Write(myRows);
});