最初にStringBuilderを使用して以下のコードを記述し、メモリ不足例外をヒットし、関連する質問を読んで文字列+ =に変更しましたが、それでも同じOOMエラーが発生します。
サイズが異なり、合計で200MB以上のファイルが2100以上あります。
制限により、追加モードのファイルアクセスは使用できません。何か推測はありますか?
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);
});