|
Программирование >> Обработка исключительных ситуаций
В этой программе весь файл считывается за один прием с помощью метода ReadToEnd. Чаще возникает необходимость считывать файл построчно, такой пример приведен в листинге 11.5. Каждая строка при выводе предваряется номером. Листинг 11.5. Построчное чтение текстового файла using System; using System.10; namespace ConsoleApplicationl { class Classl { static void MainO StreamReader f = new StreamReaderC text.txt ); string s; long i = 0: while ( ( s = f.ReadLineO ) != null ) Console.WriteLineC {0}: {1} . + + s ); f.CloseO; catch( FileNotFoundException e ) Console.WriteLineC e.Message ); Console.WriteLineC Проверьте правильность имени файла! ); return; catch С Exception e ) Console.WriteLineC Error: return; + e.Message ); Пример преобразования чисел, содержащихся в текстовом файле, в их внутре] нюю форму представления приведен в листинге 11.6. В программе вычисляет* сумма чисел в каждой строке. На содержимое файла накладываются весьма строгие ограничения: числа дол: ны быть разделены ровно одним пробелом, после последнего числа в строке пр бела быть не должно, файл не должен заканчиваться символом перевода стро* Методы разбиения строки и преобразования в целочисленное представлен рассматривались ранее. Листинг 11.6. Преобразования строк в числа using System; using System.10; namespace ConsoleApplicationi { class Classl { static void MainO StreamReader f = new StreamReaderC numbers.txt ); string s: const int n = 20; int[] a = new int[n]; string[] buf; while С ( s = f.ReadLineO ) != null ) buf = s.SplitO ) ; long = 0; for ( int i = 0; i < buf.Length; ++i ) a[i] = Convert.ToInt32( buf[i] ); += a[i]; Console.WriteLineC {0} сумма; {1}0 s. ); f.CloseO; catch( FileNotFoundException e ) { Console.WriteLineC e.Message ); Console.WriteLineC Проверьте правильность имени файла! ): return; catch С Exception e ) Console.WriteLineC Error; + e.Message ): return; Результат работы программы: 12 4 сумма: 7 3 44 -3 б сумма: 50 8 11 сумма: 10 BaseStream Базов1й поток, с котор1м работает объект BinaryWriter Close Закргть поток Flush Очистить буфер Seek Установить позицию в текущем потоке Write Записать значение в текущий поток Таблица 11.9. Наиболее важн1е элементе! класса BinaryReader Элемент Описание BaseStream Базов1й поток, с котор1м работает объект BinaryReader Close Закрыть поток PeekChar Возвратить следующий символ без перемещения внутреннего указателя в потоке Read Считать поток байтов или символов и сохранить в массиве, передаваемом как входной параметр ReadXXXX Считать из потока данные определенного типа (например, ReadBoolean, ReadByte, Readlnt32 и т. д.) В листинге 11.7 приведен пример формирования двоичного файла. В файл заи сывается последовательность вещественных чисел, а затем для демонстрац произвольного доступа третье число заменяется числом 8888. Листинг 11.7. Формирование двоичного файла using System; using System.10; namespace ConsoleApplicationl { class Classl { static void MainO Двоичные потоки Двоичные файлы хранят данные в том же виде, в котором они представлены в оперативной памяти, то есть во внутренней форме представления. Двоичные файлы применяются не для просмотра их человеком, а для использования в программах. Выходной поток BinaryWriter поддерживает произвольный доступ, то есть имеется возможность выполнять запись в произвольную позицию двоичного файла. Двоичный файл открывается на основе базового потока, в качестве которого чаще всего используется поток FileStream. Входной двоичный поток содержит перегруженные методы чтения для всех простых встроенных типов данных. Основные метод1 двоичных потоков приведены в табл. 11.8 и 11.9. Таблица 11.8. Наиболее важные элементы класса BinaryWriter Элемент Описание
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |