Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / Конспект лекций (C#).pdf
Скачиваний:
864
Добавлен:
27.05.2015
Размер:
2.03 Mб
Скачать

{

while (!sr.EndOfStream)

{

TPeople People = new TPeople(); People.FIO = sr.ReadLine(); People.Series = sr.ReadLine();

People.Number = Convert.ToInt32(sr.ReadLine()); listBox1.Items.Add(People);

}

}

8.2.3 Класс StreamWriter

Класс StreamWriter позволяет создавать объект, записывающий символы в поток в определённой кодировке, и применяемый для записи строк в стандартный текстовый файл.

Класс расположен в пространстве имён System.IO.

В таблице 8.5 приведены некоторые члены данного класса.

Таблица 8.5 – Некоторые члены класса StreamWriter

Наименование

Описание

StreamWriter

Создает экземпляр класса и связывает его с потоком

(Stream stream

stream, в который будут выводится данные.

[,Encoding encoding])

Используется кодировка по умолчанию или encoding

StreamWriter

Создает экземпляр класса и связывает его с файлом

(string path

path, в который будут выводится данные.

[,Encoding encoding])

Используется кодировка по умолчанию или encoding

Close()

Закрывает существующий поток

Write(<данные>)

Записывает в поток <данные>, которые могут быть

WriteLine(<данные>)

переменными, константами, результатами выражений

 

и т.д. Также поддерживается набор параметров,

 

используемых методом String.Format().

 

WriteLine отличается от Write выводом символов

 

конца строки и может быть использована без

 

параметров

Encoding

Возвращает текущую кодировку в виде объекта класса

 

Encoding

 

 

Пример: запись информации о людях (человек характеризуется ФИО, серией и номер паспорта). Для хранения информации об одном человеке создан класс.

class TPeople

{

public string FIO, Series; public int Number;

131

public override string ToString()

{

return FIO;

}

}

TPeople[] Peoples = ???;

using (StreamWriter sw = new StreamWriter(File.Open("data.txt", FileMode.Create)))

{

foreach (TPeople People in Peoples)

{

sw.WriteLine(People.FIO);

sw.WriteLine(People.Series);

sw.WriteLine(People.Number);

}

}

8.2.4 Класс BinaryReader

Класс BinaryReader позволяет создавать объект, считывающий из потока простые типы данных как двоичные значения в определённой кодировке.

Класс расположен в пространстве имён System.IO.

В таблице 8.6 приведены некоторые члены данного класса.

Таблица 8.6 – Некоторые члены класса BinaryReader

Наименование

Описание

BinaryReader

Создает экземпляр класса из указанного потока input.

(Stream input

Используется кодировка по умолчанию или encoding

[,Encoding encoding])

 

Close()

Закрывает существующий поток

PeekChar()

Возвращает преобразованное к int значение

 

следующего символа, или -1, если символов больше

 

нет. Позиция в потоке не меняется

Read()

Считывает один символ из потока и преобразует его к

 

типу int. Если считывание не произошло, то

 

возвращается -1

Read

Считывает из потока count или оставшееся

(char[] buffer,

количество символов, и размещает их в buffer

int index,

начиная с позиции index. Возвращает реально

int count)

считанное количество символов

 

132

Продолжение таблицы 8.6

Наименование

Описание

Read<тип>()

Считывает знвачение типа <тип> и возвращает его,

 

например:

 

using (BinaryReader br = ???)

 

{

 

int i = br.ReadInt32();

 

string s = br.ReadString();

 

double d = br.ReadDouble();

 

}

 

 

ReadBytes

Считывает из потока count байт и помещает их в

(int count)

массив байт, например:

 

using (BinaryReader br = ???)

 

{

 

byte[] b = br.ReadBytes(5);

 

}

 

 

ReadChars

Считывает из потока count символов и помещает их в

(int count)

массив символов, например:

 

using (BinaryReader br = ???)

 

{

 

char[] c = br.ReadChars(5);

 

}

Пример: чтение информации о людях (человек характеризуется ФИО, серией и номер паспорта). Для хранения информации об одном человеке создан класс.

class TPeople

{

public string FIO, Series; public int Number;

public override string ToString()

{

return FIO;

}

}

using (BinaryReader br = new BinaryReader(File.Open("data.txt", FileMode.Open)))

{

while (br.PeekChar() != -1)

{

TPeople People = new TPeople(); People.FIO = br.ReadString(); People.Series = br.ReadString(); People.Number = br.ReadInt32(); listBox1.Items.Add(People);

}

}

133

8.2.5 Класс BinaryWriter

Класс BinaryWriter позволяет создавать объект, записывающий в поток простые типы данных как двоичные значения в определенной кодировке.

Класс расположен в пространстве имен System.IO.

В таблице 8.7 приведены некоторые члены данного класса.

Таблица 8.7 – Некоторые члены класса BinaryWriter

Наименование

Описание

BinaryWriter

Создает экземпляр класса и связывает его с потоком

(Stream output

output, в который будут выводится данные.

[,Encoding encoding])

Используется кодировка по умолчанию или encoding

Close()

Закрывает существующий поток

Write(<данные>)

Записывает в поток <данные>, которые могут быть

 

переменными, константами, результатами выражений

 

и т.д.

Write

Записывает в поток count байт из иассива buffer

(byte[] buffer,

начиная с позиции index

int index,

 

int count)

 

 

 

Write

Записывает в поток count символов из иассива chars

(char[] chars,

начиная с позиции index

int index,

 

int count)

 

 

 

Seek

Перемещает текущую позицию в потоке на offset

(long offset,

байт относительно опорной точки, заданной в origin.

SeekOrigin origin)

Опорная точка может быть:

 

 

SeekOrigin.Begin – начало потока;

 

SeekOrigin.End – конец потока;

 

SeekOrigin.Current – текущее положение в по-

 

токе.

 

Возвращается текущая позиция в потоке

Пример: запись информации о людях (человек характеризуется ФИО, серией и номер паспорта). Для хранения информации об одном человеке создан класс.

class TPeople

{

public string FIO, Series; public int Number;

public override string ToString()

{

return FIO;

}

}

134

TPeople[] Peoples = ???;

using (BinaryWriter bw = new BinaryWriter(File.Open("data.txt", FileMode.Create)))

{

foreach (TPeople People in Peoples)

{

bw.Write(People.FIO);

bw.Write(People.Series);

bw.Write(People.Number);

}

}

135