![]() |
|
Программирование >> Программирование с использованием ajax
Разделить строку данных в строковый массив. StrLine = sr.ReadLineО; strArray = StrLine.Split(charArray); for (int X = 0; X <= StrArray.GetUpperBound (0) ; x++) columns.Add(strArray[x]); StrLine = sr.ReadLine0; while (strLine != null) { Разделить строку данных в строковый массив. StrArray = StrLine.Split(charArray); Dictionary<string, string> dataRow = new Dictionary<string, string>(); for (int X = 0; X <= strArray.GetUpperBound(O); x++) dataRow.Add(columns[x], strArray[x]); data.Add(dataRow); StrLine = sr.ReadLine0; sr.Close 0; return data; catch (lOException ex) { Console.WriteLine( An 10 exception has been thrown! ); исключение ввода-вывода Console.WriteLine(ex.ToString()); Console.ReadLine(); return data; 4. Добавьте следующий код в метод Main (): static void Main(string[] args) List<string> columns; List<Dictionary<string, string myData = GetData(out columns); foreach (string column in columns) Console.Write( {0,-20} , column); Console.WriteLine (); foreach (Dictionary<string, string> row in myData) { foreach (string column in columns) { Console.Write( {0,-20} , row[column]); Console.WriteLine 0; Console.ReadKey(); 5. Добавьте новый текстовый файл по имени SomeData.txt, выбрав элемент Text File (Текстовый файл) в диалоговом окне, доступном через пункт меню Project Add New Item (Проект=>Добавить новый элемент). 6. Введите следующий текст в новый текстовый файл: ProductID, Name, Price 1, Spiky Pung,1000 2,Gloop Galloop Soup,25 4,Hat Sauce,12 7. Запустите приложение. Вы должны увидеть текст файла, выведенный на консоль, как показано на рис. 24.6. ![]() Рис. 24.6. Результат работы приложения CormaValues Описание полученных результатов Как и в предыдущем примере, это приложение читает файл строку за строкой в объект string. Однако поскольку известно, что :w3t файл содержит разделенные запятыми текстовые значения, они обрабатываются по-другому. Кроме того, в действительности прочитанные значения будут сохраняться в структуру данных. Сначала нужно взглянуть на сами разделенные запятыми данные: ProductID, Name, Price 1,Spiky Pung,1000 Первая строка содержит имена столбцов данных, а следующие за ней строки - сами данные. Таким образом, вы должны получить имена столбцов из первой строки файла и затем извлечь данные из остальных строк. Метод GetData () объявлен статическим, поэтому можно вызвать этот метод без создания экземпляра вашего класса. Этот метод возвращает объект List<Dictionary<string, string , который вы создадите и затем наполните данными из разделенного запятыми текстового файла. Он также вернет объект List<string>, содержащий имена заголовков. Следующий код инициализирует эти объекты: List<Dictionary<string, string data = new List<Dictionary<string, string (); columns = new List<string>(); columns будет содержать имена столбцов, взятые из первой строки текстового файла, разделенной запятыми, а data - значения последующих строк файла. Все начинается с создания объекта FileStream, а затем вокруг него конструируется StreamReader, как это делалось в предыдущих примерах. Теперь можно прочитать первую строку файла и создать массив строк из этой одной строки: StrLine = sr.ReadLineО; StrArray = StrLine.Split(charArray); Метод Split 0 , который рассматривался в главе 5, принимает символьный массив- в данном случае содержащий только , чтобы strArray содержал массив строк, сформированный путем разбиения strLine по экземплярам , . Поскольку в настоящий момент осуществляется чтение из первой строки файла, и эта строка содержит имена столбцов данных, необходимо пройтись по каждой строке в strArray и добавить ее в columns: for (int X = 0; X < = StrArray. GetUpperBound (0) ; x+ + ) { columns.Add(strArray[x]); Теперь, имея имена столбцов ваших данных, можно приступить к чтению самих данных. Код, необходимый для этого, по существу тот же, что и в ранее приведенном примере StreamRead, за исключением присутствия кода, необходимого для добавления к data объекта Dictionary<string, string>: StrLine = sr.ReadLine О; while (StrLine != null) { Разбиение строки данных на строковый массив. StrArray = StrLine.Split(charArray); Dictionary<string, string> dataRow = new Dictionary<string, string>(); for (int X = 0; X <= StrArray.GetUpperBound (0) ; x+ + ) dataRow.Add(columns[x], strArray[x]); data.Add(dataRow); StrLine = sr.ReadLine0; Для каждой строки файла создается новый объект Dictionary<string, string>, который заполняется элементами этой строки. Каждое вхождение в эту коллекцию имеет ключ, соответствующий имени столбца, и значение, представляющее собой значение столбца этой строки. Ключи извлекаются из созданного ранее объекта columns и значений, поступающими из строкового массива, который получен из Split () для строки текста, извлеченной из файла данных. Прочтя все данные из файла, StreamReader закрывается, а данные возвращаются. Код в методе Main () получает данные из метода GetData () в переменные myData и columns и отображает информацию на консоли. Сначала отображается имя каждого столбца: foreach (string column in columns) { Console.Write( {0,-20} , column); Console.WriteLine(); Часть -20 форматной строки {О, -20} гарантирует, что отображаемое имя будет выровнено влево в столбце шириной 20 символов; это поможет форматировать вывод. И, наконец, осуществляется проход в цикле по объекту Dictionary<string, string> в коллекции myData и отображение значений в строке, каждый раз с использованием форматирующей строки для вывода: foreach (Dictionary<string, string> row in myData) { foreach (string column in columns) { Console.Write( {0,-20} , row[column]); Console.WriteLine(); Как видите, извлечь осмысленные данные из файла со значениями, разделенными запятыми (CVS), с помощью .NET Framework достаточно просто. Эту технику также
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |