Программирование >>  Программирование с использованием ajax 

1 ... 247 248 249 [ 250 ] 251 252 253 ... 396


Разделить строку данных в строковый массив.

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 достаточно просто. Эту технику также



1 ... 247 248 249 [ 250 ] 251 252 253 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика