Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прога - ответы2.docx
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
206.38 Кб
Скачать

Классы StringWriter и StringReader

Классы StringWriter и StringReader реализуют функциональность практически идентичную вышеописанным StreamWriter и StreamReader, за исключением того, что вместо файла они в качестве буфера используют строку System.String.

Еще одно отличие класса StringWriter заключается в том, что для него при помощи метода GetStringBuilder() можно получить объект StringBuilder.

Работа с классами BinaryWriter и BinaryReader

Классы BinaryWriter и BinaryReader являются прямыми наследниками System.Object. Эти типы позволяют читать и записывать дискретные типы данных в потоки в компактном двоичном формате.

В классе BinaryWriter определен многократно перегруженный метод Write() для помещения типов данных в лежащий в основе поток. В дополнение к Write(), класс BinaryWriter предоставляет дополнительные члены, позволяющие получать или устанавливать объекты унаследованных от Stream типов, а также поддерживает произвольный доступ к данным.

Основные члены BinaryWriter:

BaseStream

Это свойство, предназначенное только для чтения, обеспечивает доступ к лежащему в основе потоку, используемому объектом BinaryWriter

Close()

Этот метод закрывает двоичный поток

Flush()

Этот метод выталкивает буфер двоичного потока

Seek()

Этот метод устанавливает позицию в текущем потоке

Write()

Этот метод пишет значение в текущий поток

Основные члены BinaryReader

BaseStream

Это свойство, предназначенное только для чтения, обеспечивает доступ к лежащему в основе потоку, используемому объектом BinaryReader

Close()

Закрывает двоичный поток

PeekChar()

Возвращает следующий доступный символ без перемещения текущей позиции потока

Read()

Читает заданный набор байт или символов и сохраняет их в переданном ему массиве

ReadXXXX()

В классе BinaryReader определено множество методов чтения, которые извлекают из потока объекты разных типов (ReadBoolean(), ReadByte(), Readlnt32() и т.д.)

Пример:

Filelnfo f = new Filelnfo("BinFile.dat");

// Записать двоичные данные из потока.

using ( BinaryWriter bw = new BinaryWriter(f.OpenWrite()) )

{

// Создать некоторые данные для сохранения в файле.

double aDouble = 1234.67;

int anlnt = 34567;

string aString = "А, В, C";

// Записать данные.

bw.Write(aDouble);

bw.Write(anlnt);

bw.Write(aString);

}

// Читать двоичные данные из потока.

using ( BinaryReader br = new BinaryReader(f.OpenRead()) )

{

Console.WriteLine(br.ReadDouble());

Console.WriteLine(br.Readlnt32());

Console.WriteLine(br.ReadString());

}

Выводы:

  • Пространство имен System.IO предоставляет классы для работы с файловой системой и осуществления ввода-вывода.

  • Классы Directory/DirectoryInfo реализуют методы для работы с каталогами как объектами файловой системы, классы File/FileInfo – с файлами.

  • Потоки – абстракция для взаимодействия с произвольной последовательностью байт в одинаковой манере вне зависимости от источника данных.

  • Класс FileStream предоставляет наиболее абстрактную реализацию файлового потокового ввода/вывода, позволяя читать и записывать одиночные байты или последовательности байт.

  • Классы StreamWriter/StreamReader реализуют работу с фалами как с потоками текстовой информации

  • Классы StringReader/StringWriter аналогичны Stream… классам, но работают не с файлом, а со строкой в качестве источника/приемника данных

  • Классы BinaryReader/BinaryWriter позволяют работать с файлами в двоичном представлении, реализуя удобные методы для записи и чтения данных различных типов.