Я пытаюсь редактировать некоторые данные в файле с помощью Visual Studio C#. Я пробовал использовать обаМаксимальное количество данных в файле в C#?
StreamReader and File.ReadAllLines/ReadAllText
Оба результата дают мне 3414 строк содержимого. Я использовал «Split» («\ n») после «ReadAllText». Но когда я проверяю с помощью следующей команды на Linux я получаю результаты следуют:
cat phase1_promoter_data_PtoP1.txt | wc
Выход:
184829 164686174 1101177922
Так около 185,000 линий и 165 миллионов слов. Количество слов на Visual Studio дает мне около 19 миллионов.
Итак, мой вопрос: я читаю файл неправильно или у Visual Studio есть ограничение на количество данных, которое он будет читать сразу? Мой файл занимает около 1 ГБ пространства.
Вот код, я использую:
try
{
using (StreamReader sr = new StreamReader("phase1_promoter_data_PtoP1.txt"))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
String[,] data = new String[184829, 891];
//List<String> data2 = new List<String>();
string[] lol = line.Split('\n');
for (int i = 0; i < lol.Length; i++)
{
String[] oneLine = lol[i].Split('\t');
//List<String> singleLine = new List<String>(lol[i].Split('\t'));
for (int j = 0; j < oneLine.Length; j++)
{
//Console.WriteLine(i + " - " + lol.Length + " - " + j + " - " + oneLine.Length);
data[i,j] = oneLine[j];
}
}
Console.WriteLine(data[3413,0]);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Если этот файл содержит более 3414 строк, этот код будет вызывать исключение из пределов границ, как только он встретится с 3415-й строкой. Я также не уверен, что ваша строка строки может содержать 1 ГБ текста рядом с вашей 'string [] lol', которая будет содержать то же самое, но разделена на новую строку. Вы уверены, что ищете тот же файл, что и тот, который вы кормите на 'cat'? – CodeCaster
Мой плохой, я изменил размер моего массива, потому что я полагал, что мой результат был неправильным. Но я не получаю исключения, потому что на самом деле в массив загружено 3414 строк. – Vanquiza
Возможно, некоторые строки имеют \ r, а некоторые имеют \ r \ n или \ n разделители, а wc обрабатывает их иначе, чем ReadAllLines()? –