![]() |
|
Программирование >> Программирование с использованием ajax
Объекты 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); Получить столбцы из первой строки.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |