Моя цель - прочитать текстовый файл (< 50 мб) и выполнить на нем регулярное выражение, а затем сохранить его обратно в другой файл (в C#). Как я делаю это, опубликовано ниже.C# не может прочитать текстовый файл (не очень большой) (IndexOutOfRange)
Regex regex = new Regex(@"\s{2,}");
var lines = File.ReadLines(path);
foreach (var line in lines)
{
Console.WriteLine(regex.Split(line,2)[1]);
File.WriteAllText(regex.Split(line,2)[1]);
}
Когда я пробую это с небольшим файлом (140 КБ), он отлично работает. Когда я запускаю то же самое с файлом размером ~ 50 МБ, он вылетает Есть ли у него что-нибудь с выполнением регулярного выражения внутри цикла?
IndexOutOfRange - это исключение, которое выбрасывается. Что я не могу понять, так это то, как файл размером 45 Мбайт может отключить мою систему из памяти? У меня установлено 8 гигабайт оперативной памяти.
Сплит() не возвращает массив с элементом по индексу 1 –
Прочитайте исключение. Проверьте трассировку стека. Изолируйте код. Например, вы можете ввести переменную 'string [] split = regex.Split (строка, 2)', а затем проверить, что этот массив фактически имеет два элемента. – CodeCaster
Не то, чтобы это ваша проблема ... но когда вы используете VS, у нее останется только столько памяти для программы. [Статья] (http://blogs.msdn.com/b/calvin_hsia/archive/2010/09/27/10068359.aspx). – ryuu9187