Программирование >>  Обработка исключительных ситуаций 

1 ... 82 83 84 [ 85 ] 86 87 88 ... 142


В этой программе весь файл считывается за один прием с помощью метода 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

Элемент Описание



1 ... 82 83 84 [ 85 ] 86 87 88 ... 142

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