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

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


Объекты StreamReader создаются почти так же, как объекты StreamWriter. Наиболее распространенный способ его создания - применение ранее созданного объекта FileStream:

FileStream aFile = new FileStream( Log.txt , FileMode.Open); StreamReader sr = new StreamReader(aFile);

Подобно StreamWriter, объект класса StreamReader может быть создан непосредственно из строки, содержащей путь к определенному файлу:

StreamReader sr = new StreamReader( Log.txt );

Пракгаческое занятие ВХОДНОЙ ПОТОК

1. Создайте новое консольное приложение по имени StreamRead и сохраните его в каталоге С: \BegVCSharp\Chapter24.

2. Импортируйте пространство имен System. 10, поместив следующую строку кода в начало файла Program.cs:

using System;

using System.Collections.Generic; using System.Linq; using System.Text; using System.lO;

3. Добавьте следующий код в метод Main (): static void Main(string [ ] args)

string strLine;

FileStream aFile = new FileStream( Log.txt , FileMode.Open) ;

StreamReader sr = new StreamReader(aFile);

StrLine = sr.ReadLine0;

Прочитать данные строка за строкой.

while(StrLine !=null)

Console.WriteLine(strLine) ; StrLine = sr.ReadLine0;

sr.Close 0;

catch(lOException e) {

Console.WriteLine( An 10 exception has been thrown );

Console.WriteLine (e.ToString());

return;

Console.ReadKey 0;

4. Скопируйте файл Log.txt, созданный в предыдущем примере, в каталог StreamRead\bin\Debug. Если файла по имени Log.txt нет, конструктор FileStream сгенерирует исключение.

5. Запустите приложение. Вы должны увидеть выведенное на консоль содержимое файла, как показано на рис. 24.5.




Рис. 24.5. Результат работы приложения StreamRead

Описание полученных результатов

Это приложение очень похоже на предыдущее, но с очевидным отличием - на этот раз осуществляется чтение файла вместо записи в него. Как и ранее, вы должны импортировать пространство имен System. 10, чтобы иметь доступ к необходимым классам.

Для чтения текста из файла применяется метод ReadLine (). Метод читает текст до тех пор, пока не встретит символ новой строки, и возвращает прочтенный текст в виде строки. Метод возвращает null, когда достигнут конец файла, что можно использовать для проверки наступления этого условия. Обратите внимание на применение цикла while; это гарантирует, что прочтенная строка не будет равна null, прежде чем выполнится любой код в теле цикла - таким образом, будет отображено только настоящее содержимое файла:

strLine = sr.ReadLine О ; while(strLine != null) {

Console.WriteLine(strLine); StrLine = sr.ReadLine0;

Чтение данных

Метод ReadLine () - не единственный способ получить доступ к данным в файле. Класс StreamReader включает множество методов для чтения данных.

Простейший из методов чтения - Read (). Он возвращает следующий символ из потока как положительное целое число или -1, если достигнут конец потока. Это значение может быть преобразовано в символ с использованием служебного класса Convert. В предыдущем примере основные части программы можно было бы переписать так, как показано ниже:

StreamReader sr = new StreamReader(aFile);

int nChar;

nChar = sr.ReadO ;

while(nChar != -1)

Console.Write(Convert.ToChar(nChar)); nChar = sr.Read();

sr.Close 0 ;

Очень удобен при работе с файлами поменьше метод ReadToEnd (). Он читает весь файл целиком и возвращает его содержимое в виде строки. В этом случае предыдущее приложение может быть упрощено до следующего:

StreamReader sr = new StreamReader(aFile); StrLine = sr.ReadToEnd0 ; Console.WriteLine(strLine); sr .Close 0 ;



Хотя это может показаться простым и удобным, будьте осторожны. Читая все данные в строковый объект, вы помещаете все данные файла в память. В зависимости от размера этих данных это может быть крайне нежелательно. Если данные очень велики, лучше оставить их в файле и обращаться к ним методами StreamReader.

Файлы с разделителями

Файлы с разделителями - распространенная форма хранения данных, используемая во многих унаследованных системах. Если ваше приложение должно взаимодействовать с такой системой, вы часто будете встречаться с форматом данных с разделителями. Наиболее распространенный разделитель - запятая. Например, данные из электронных таблиц Excel, из базы данных Access или SQL Server могут быть экспортированы в файл с разделителем-запятой (comma-separated value - CVS).

Вы уже видели, как используется класс StreamWriter для записи таких файлов. Читать их также несложно. Возможно, вы помните из главы 5 метод Split () класса String, применяемый для преобразования строки в массив на основе указанного символа-разделителя. Если вы специфицируете в качестве такого разделителя запятую, он создаст строковый массив правильной размерности, содержащий все данные из исходной строки с разделителем-запятой.

Следующее практическое занятие демонстрирует, насколько это может оказаться полезным. В примере используются значения, разделенные запятыми, которые загружаются в объект List<Dictionary<string, string . Этот полезный пример носит достаточно общий характер, и вы можете счесть удобным применение такой техники в собственном приложении, если необходимо работать с разделенными запятыми значениями.

Значения, разделенные запятыми

1. Создайте новое консольное приложение по имени Comma Values и сохраните его в каталоге C:\BegVCSharp\Chapter24.

2. Поместите следующую строку в код в начало Proram.cs. Для работы с файлами нужно импортировать пространство имен System. 10:

using System;

using System.Collections.Generic; using System.Linq; using System.Text; using System.lO;

3. Добавьте следующий метод GetData () в тело Program, cs перед методом Main ():

private static List<Dictionary<string, string GetData(out List < string > columns)

string StrLine; string[] strArray;

char[] charArray = new char [ ] {,};

List<Dictionary<string, string data = new List<Dictionary<string, string ();

columns = new List<string>() ;

FileStream aFile = new FileStream(@ ..\..\SomeData.txt , FileMode.Open) ; StreamReader sr = new StreamReader(aFile); Получить столбцы из первой строки.



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

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