.NET 4.x Исключение при вводе информации из файла - C#
Формулировка задачи:
Всем здравствовать!
Может кто поможет, я никак не пойму почему вылетает исключение вида System.IndexOutOfRangeException при попытке записать информацию из файла в массив. Отладчиком прогнал до ошибки, не увидел в чем проблема.
Вот написал такой код:Который вызываю здесь:
Сам файл Xv текстовый вида: 3.0 2.6 ( это только для пояснения: конец строки)
2.3 0.7 и т.д.
private double[,] FromFile(string filename) // функция возвращает массив, где первый столбец время, второй значение параметра
{
FileStream fin = new FileStream(filename, FileMode.Open, FileAccess.Read); // открывает файл с именем filename на чтение
StreamReader sr = new StreamReader(fin, Encoding.UTF8);
string Line; // строка файла
string[] strArr; // массив для записи значений строки, разделенных разделителем
double[,] array1 = new double[,] {{0}}; // массив результата
char[] charArr = new char[] {' '};
int i = 0;
int j = 0;
while (sr.EndOfStream != true)
{
Line = sr.ReadLine();
strArr = Line.Split(charArr);
for (i = 0; i < 2; i++) //strArr.Length
array1[j, i] = Convert.ToDouble(strArr[i]);
j++;
}
return array1;
} private void DrawGraph()
{
// Создаем экземпляр класса MasterPane, который представляет собой область,
// на которой "лежат" все графики (экземпляры класса GraphPane)
double[,] arrPane1 = FromFile("C:\\Users\\user\\Documents\\Visual Studio 2010\\Projects\\CiSharp\\Zed_plot5\\Zed_plot5\\Xv.txt");
}Решение задачи: «.NET 4.x Исключение при вводе информации из файла»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
double[][] Data = FromFile(@"C:\Xv.txt");
}
private double[][] FromFile(string filename)
{
string AllText = string.Empty;
using (StreamReader sr = new StreamReader(filename, Encoding.UTF8))
{
// Считываем весь текст
AllText = sr.ReadToEnd();
}
// Разделяем на строки
string[] Lines = AllText.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
double[][] Array1 = new double[Lines.Length][];
for(int i = 0; i < Lines.Length; i++)
{
// Разделяем на элементы через пробел
string[] Items = Lines[i].Split(' ');
Array1[i] = new double[Items.Length];
for(int j = 0; j < Items.Length; j++)
{
Array1[i][j] = Convert.ToDouble(Items[j]);
}
}
return Array1;
}