Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Список лекций по акушерству




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

Работа с классами StreamWriter и StreamReader

Абстрактный класс Stream

Работа с классом File

Методы CreateText() и AppendText()

Метод OpenText()

Методы OpenRead() и OpenWrite()

Метод Open()

Метод Create()

Работа с классом FileInfo

Работа с классом DriveInfo

Работа с классом Directory

Создание подпапок с помощью класса DirectoryInfo

Перечисление файлов с помощью класса DirectoryInfo

Создание объектов класса DirectoryInfo

Работа с классом DirectoryInfo

Абстрактный базовый класс FileSystemInfo

Работа с файлами и папками

При разработке реальных приложений обязательным является хранение данных на устройствах внешней памяти для поддержки связи между сеансами работы с приложением. В библиотеку платформы.Net – FCL имеется пространство имен System.IO содержащее набор классов для работы с папками (директориями, каталогами) и файлами на внешних устройствах. В это пространство имен включены классы Directory и File, которые содержат методы для создания, удаления, копирования и перемещения папок и файлов с помощью статических методов. С этими классами тесно связаны классы FileInfo и DirectoryInfo, которые содержат аналогичную функциональность, но используют методы экземпляров класса (поэтому, для работы с ними должны быть созданы объекты этих классов с помощью операции new). Классы FileInfo и DirectoryInfo являются производными от абстрактного класса FileSystemInfo. Классы FileInfo и DirectoryInfo лучше использовать для получения всех детальных описаний файлов и папок (например, время их создания, возможности чтения/записи, и т.п.), так как методы этих классов возвращают строго типизированные объекты. А методы классов Directory и File чаще возвращают простые строковые значения, а не строго типизированные объекты.

Классы DirectoryInfo и FileInfo получают много методов от абстрактного класса FileSystemInfo. Элементы класса FileSyste165 mInfo в основном используются для получения общих характеристик (таких, как время создания, различные атрибуты и т.д.) о конкретном файле или папке.

Таблица 9.1. Свойства класса FileSystemInfo

Свойство Описание
Attributes получение или задание атрибутов, связанных с текущим файлом или папкой, которые представляются в виде перечисления FileAttributes;
CreationTime получение или задание времени создания текущего файла или папки;
Exists может использоваться для определения того, существует ли заданный файл или папка;
Extension получение расширения файла;
FullName получение полного пути папки или файла;
LastAccessTime получение или задание времени, когда текущая папка или файл в последний раз использовались;
LastWriteTime получение или задание времени, когда в текущую папку или файл в последний раз выполнялась запись;
Name получение имени текущей папки или файла.

 

В классе FileSystemInfo также определен метод Delete(), который реализуется в производных классах для удаления заданной папки или файла с внешнего устройства. А также определен метод Refresh(), вызов которого перед получением информации об атрибутах, гарантирует, что эта информация не устарела.

Класс DirectoryInfo содержит набор методов для создания, перемещения, удаления и выполнения перечисления всех папок и подпапок. В данном классе к функциональности базового класса FileSystemInfo добавлены следующие основные возможности (табл. 9.2).

Таблица 9.2. Основные элементы класса DirectoryInfo

Элементы Описание
Create(), CreateSubdirectory() создание папки (или набора подпапок) с использованием заданного имени;
Delete() удаление папки и всего ее содержания;
GetDirectories() получение массива срок, которые содержат названия всех подпапок текущей папки;
GetFiles() получение массива объектов типа FileInfo, которые соответствуют файлам конкретной папки;
MoveTo() перемещение папки и ее содержания в новое место;
Parent получение объекта DirectoryInfo родительской папки для текущей папки.
Root получение объекта DirectoryInfo для корневой папки текущей папки

 

Работа с классом DirectoryInfo начинается с создания объекта данного класса с помощью конструктора, параметром которого является путь к конкретной папке. Для получения объекта соответствующего текущей папке (например, директории выполняемого приложения), используйте строка ".". Например:

// получение текущей рабочей папки

DirectoryInfo dir1 = new DirectoryInfo(".");

// получение объекта соответстующего папке C:\Windows

DirectoryInfo dir2 = new DirectoryInfo(@"C:\Windows");

 

Если указанной папки не существует, то объект будет создан, однако при работе с ним будет выдаваться исключение System.IO.DirectoryNotFoundException.

Если создан объект для не существующей папки, то нужно вызвать метод Create() прежде, чем продолжать работу с объектом:

// Создаем объект для не существующей папки

DirectoryInfo dir3 = new DirectoryInfo(@"C:\MyFolder");

// Затем создаем эту папку

dir3.Create();

 

После создания объекта класса DirectoryInfo, можно выполнять работать с его содержанием, используя любые свойства, наследуемые от класса FileSystemInfo. Например, объект класса DirectoryInfo, связанный с папкой C:\Windows, позволяет получить много полезной информации о ней:

DirectoryInfo dir = new DirectoryInfo(@"C:\Windows");

Console.WriteLine("FullName: {0}", dir.FullName);

Console.WriteLine("Name: {0}", dir.Name);

Console.WriteLine("Parent: {0}", dir.Parent);

Console.WriteLine("Attributes: {0}", dir.Attributes);

Для получения информации о файлах, содержащихся в папке, используется метод GetFiles(), параметром которого является маска имен нужных файлов (например, “*.*” – все файлы, “*.jpg” – файлы с расширением jpg). Данный метод возвращает массив объектов типа FileInfo, каждый из которых соответствует одному файлу, расположенному в папке. Например:

DirectoryInfo dir =

new DirectoryInfo(@"C:\Windows\Web\Wallpaper");

// Получить все файлы с расширением *.jpg

FileInfo[] imageFiles = dir.GetFiles("*.jpg");

// Сколько файлов было найдено?

Console.WriteLine("Found {0} *.jpg files\n",

imageFiles.Length);

// Вывод на экран информацию о каждом файле.

foreach (FileInfo f in imageFiles) {

Console.WriteLine("File name: {0}", f.Name);

Console.WriteLine("File size: {0}", f.Length);

}

Для создания новых подпапок в текущей папке используется метода CreateSubdirectory(). При одном вызове этого метод за один раз создается одна или несколько вложенных подпапок. Например, для создания подпапки с именем MyFolder:

DirectoryInfo dir = new DirectoryInfo(".");

// создаем поддиректорию \MyFolder

DirectoryInfo myDataFolder =

dir.CreateSubdirectory("MyFolder");

// Создаем две вложенных поддиректории

dir.CreateSubdirectory(@"MyFolder2\Data");

 

Результатом работы метода CreateSubdirectory() является ссылка на объект класса DirectoryInfo, который соответствует созданной подпапке.

Возможности класса Directory во много аналогичны возможностям класса DirectoryInfo. Однако класс Directory является статическим классом и не позволяет создавать объекты, а только позволяет вызывать его методы. Кроме этого отметим, что элементы Directory обычно возвращают строки (string), а не объекты конкретных типов, таких, как FileInfo или DirectoryInfo.

В примере приведенном ниже показано использование класса Directory для вывода не экран название всех устройств компьютера (с помощью статического метода GetLogicalDrives()) и для удаления ранее созданной папки с именем \MyFolder помощью статического метода Delete():

 

// Перечисление всех драйверов компьютера

string[] drives = Directory.GetLogicalDrives();

Console.WriteLine("Драйверы компьютера:");

foreach (string s in drives)

Console.WriteLine("--> {0} ", s);

// Удаление папки С:\MyFolder

try {Directory.Delete(string.Format(@"C:\MyFolder"));}

catch (IOException e) { Console.WriteLine(e.Message); }

В пространстве имен System.IO содержится класс с именем DriveInfo. Так же, как и Directory.GetLogicalDrives(), статический метод DriveInfo.GetDrives() позволяет получить имена драйверов компьютера. Однако в отличие от Directory.GetLogicalDrives(), DriveInfo предоставляет множество других данных (такие как тип драйвера, свободное место, метки тома и т.п.). Рассмотри следующий пример:

// Получение информации обо всех драйверах

DriveInfo[] myDrives = DriveInfo.GetDrives();

// Вывод на экран их данных

foreach(DriveInfo d in myDrives) {

Console.WriteLine("Имя: {0}", d.Name);

Console.WriteLine("Тип: {0}", d.DriveType);

// проверка, смонтирован ли драйвер

if (d.IsReady) {

Console.WriteLine("Свободное место: {0}",

d.TotalFreeSpace);

Console.WriteLine("Формат: {0}", d.DriveFormat);

Console.WriteLine("Метка: {0}", d.VolumeLabel);

Console.WriteLine();

}

}

Класс FileInfo позволяет получать описания файлов, имеющихся на внешнем устройстве (например, время создания, размер, атрибуты файлов и т.д.) и помогает создавать, копировать, перемещать и уничтожать файлы. Класс FileInfo, помимо возможностей базового класса FileSystemInfo, включает набор собственных элементов (табл. 9.3).

Отметим, что большинство методов класса FileInfo возвращают объекты конкретных классов (FileStream, StreamWriter и т.п.), которые позволяют выполнять чтение/запись данных разных форматов из (или в) связанный с ними файл.

Таблица 9.3. Основные элементы класса FileInfo

Элементы Описание
AppendText() создание объекта класса StreamWriter (рассмотрен далее), который добавляет текст к файлу;
CopyTo() копирование существующего файла в новый файл;
Create() создание нового файла и возвращение объекта типа FileStream (рассмотрен далее) для работы с ним;
CreateText() создание объекта класса StreamWriter, который пишет в новый текстовый файл;
Delete() удаление файла;
Directory получение объекта, соответствующего родительской папке;
DirectoryName получение полного пути к родительской папке;
Length получение размера текущего файла или папки;
MoveTo() перемещение файла в новое место, с возможностью изменения имени файла;
Name получение имени файла;
Open() открытие файла с различными привилегиями на чтение/запись и совместное использование;
OpenRead() создание объекта класса FileStream только для чтения;
OpenText() создание объекта класса StreamReader, который позволяет читать из существующего текстового файла;
OpenWrite() создание объекта класса FileStream только для записи.

 

Метод Create()класса FileInfo является основным методом для создания новых файлов. Он возвращает ссылку на объект типа FileStream, который умеет выполнять операции чтения/записи для созданного файла. После окончания работы с объектом FileStream, необходимо выполнить закрытие данного объекта (потока), для освобождения ресурса:

// Создаем новый файл на устройстве C

FileInfo f = new FileInfo(@"C:\Test.dat");

FileStream fs = f.Create();

//... выполняем работу с новым файлом

// Закрываем поток файла

fs.Close();

Для открытия существующего файла или создания нового файла можно использовать метод Open() класса FileInfo. Метод Open() позволяет более точно описать создаваемый файл, чем метод Create().

Результатом выполнения метода Open(), является ссылка на объект класса FileStream:

// Создаем новый файл с помощью метода Open()

FileInfo f2 = new FileInfo(@"C:\Test2.dat");

FileStream fs2 = f2.Open(FileMode.OpenOrCreate,

FileAccess.ReadWrite, FileShare.None);

//...

fs2.Close();

 

Имеются несколько перегруженных методов Open(). Основной вариант данного метода принимает три параметра.

Первый параметр описывает общую информацию об открытии файла (например, создание нового файла, открытие существующего файла, добавление данных в конец файла, и т.п.), что задается с помощью перечисления FileMode (табл. 9.4):

public enum FileMode {CreateNew, Create, Open,

OpenOrCreate, Truncate, Append}

Таблица 9.4. Элементы перечисления FileMode

Элемент Описание
CreateNew создание нового файла, Если файл с таким именем уже существует, то будет формироваться исключение IOException;
Create создание нового файл. Если файл с таким именем уже существует, то он будет переписан;
Open открытие существующего файла. Если такого файла нет, то будет сформировано исключение FileNotFoundException;
OpenOrCreate открытие файла, если он уже существует; если его нет, то он создается;
Truncate открытие файла и удаление его содержания до размера в 0 байт;
Append открытие файла, перемещение в конец содержания файла и переход в режим записи (это значение можно использовать только с потоком для записи – writeonly stream). Если такого файла еще нет, то он создается.

 

Вторым параметром является значение перечисления FileAccess, который определяет виды выполняемых операций ввода/вывода:

public enum FileAccess { Read, Write, ReadWrite }

 

И, наконец, третий параметр, FileShare, задает режим совместной работы с данным файлом разными приложениями:

public enum FileShare { None, Read, Write, ReadWrite }

 

Метод Open() позволяет очень подробно описать режим работы с файлом и получит ссылку на объект класса FileStream. Однако в классе FileInfo также имеются методы OpenRead() и OpenWrite(), которые позволяют получить ссылку на объект класса FileStream, настроенные только на чтение и запись (соответственно), без необходимости описывать различные параметры. Например:

 

// Получить ссылку FileStream для чтения из файла

FileInfo f3 = new FileInfo(@"C:\Test3.dat");

FileStream readOnlyStream = f3.OpenRead();

//... использование объекта FileStream

readOnlyStream.Close();

// теперь получаем объект FileStream для записи

FileInfo f4 = new FileInfo(@"C:\Test4.dat");

FileStream writeOnlyStream = f4.OpenWrite();

//... использование объекта FileStream

writeOnlyStream.Close();

Другим методом класса FileInfo предназначенным для открытия файла является метод OpenText(). В отличие от методов Create(), Open(), OpenRead()и OpenWrite(), метод OpenText() возвращает ссылку на объект класса StreamReader, а не класса FileStream. Класс StreamReader предоставляет возможность читать текстовые данные из файла. Например:

// Получаем ссылку на объект класса StreamReader

FileInfo f5 = new FileInfo(@"C:\boot.ini");

StreamReader sreader = f5.OpenText();

//... использование объекта StreamReader

sreader.Close();

Методы CreateText() и AppendText() возвращают ссылку на объекты класса StreamWriter. Класса StreamWriter предоставляет возможности для записи текстовых данных в файл. Метод CreateText() позволяет создать новый файл и возвращает ссылку на объект, позволяющую выполнять запись текстовых данных в новый файл. А метод AppendText()возвращает ссылку на объект, позволяющую выполнять запись текстовых данных в конец существующего файла. Например:

FileInfo f6 = new FileInfo(@"C:\Test5.txt");

StreamWriter swriter = f6.CreateText();

//... использование объекта StreamWriter

swriter.Close();

FileInfo f7 = new FileInfo(@"C:\FinTst.txt");

StreamWriter swAppend = f7.AppendText();

//... использование объекта StreamWriter

swAppend.Close();

Класс File предоставляет почти те же возможности, которые есть в классе FileInfo, но использует для этого статические методы. Так же как и класс FileInfo, класс File предоставляет методы AppendText(), Create(), CreateText(), Open(), OpenRead(), OpenWrite() и OpenText(). Фактически, во многих случаях, классы File и FileInfo могут использоваться взаимозаменяемо. В качестве демонстрации, можно приведенные ранее примеры для класса FileStream переписать с использованием класса File:

// Получаем объект FileStream с помощью File.Create().

FileStream fs = File.Create(@"C:\Test.dat");

// Получаем объект FileStream с помощью File.Open().

FileStream fs2 = File.Open(@"C:\Test2.dat",

FileMode.OpenOrCreate, FileAccess.ReadWrite,

FileShare.None);

// Получаем объект FileStream только для чтения

FileStream readOnlyStream = File.OpenRead(@"Test3.dat");

// Получаем объект FileStream только для записи

FileStream writeOnlyStream = File.OpenWrite(@"Test4.dat");

// Получаем объект StreamReader

StreamReader sreader = File.OpenText(@"C:\boot.ini");

// Получаем объект StreamReader для нового файла

StreamWriter swriter = File.CreateText(@"C:\Test3.txt");

// Получаем объект StreamReader для добавления текста

StreamWriter swAppend = File.AppendText(@"C:\FinTst.txt");

Дополнительные методы класса File

Класс File также поддерживает несколько специальных методов, которые поясняются в табл. 9.5, которые значительно упрощают процесс чтения и записи текстовых данных.

Использование этих методов класса File позволяет читать и записывать порцию данных с помощью нескольких операторов.

 

Таблица 9.5. Методы класса File

Метод Описание
ReadAllBytes() открывает указанный файл, возвращает бинарные данные в виде массива типа byte и затем закрывает файл;
ReadAllLines() открывает указанный файл, возвращает символьные данные в виде массива строк и затем закрывает файл;
ReadAllText() открывает указанный файл, возвращает символьные данные в виде одной строки и затем закрывает файл;
WriteAllBytes() открывает указанный файл, записывает массива типа byte и затем закрывает файл;
WriteAllLines() открывает указанный файл, записывает массив строк и затем закрывает файл;
WriteAllText() открывает указанный файл, записывает символьную строку и затем закрывает файл.

Например, в следующем примере символьные данные записываются в новый файл:

string[] myTasks =

{"Перевести текст","Позвонить маме"};

// Запись всех данных в файл.

File.WriteAllLines(@"C:\tasks.txt", myTasks);

// Чтение всех записанных данных и вывод их на экран

foreach (string task in

File.ReadAllLines(@"C:\tasks.txt"))

Console.WriteLine("Нужно сделать: {0}", task);

 

 

Рис. 9.1. Классы производные от класса Stream.

 

 

Для того, чтобы не только получать информацию о файлах и выполнять с ним разные операции (например, создание, копирование, перемещение и удаление), а также читать или записывать данные в файлы, используется понятие «поток» (stream).

В области ввода/вывода данных, поток представляется виде порции данных передаваемых между источником и получателем. Потоки предоставляют общий способ взаимодействия с последовательностью байт, независимо от того, какой тип устройства (файл, сетевое соединение, принтер и т.п.) хранит или отображает эти байты. Абстрактный класс System.IO.Stream определяет набор элементов, предоставляющих поддержку разных типов взаимодействия с устройствами хранения данных (например, некоторый файл или участок памяти).

Классы, производные от абстрактного базового класса Stream (рис. 9.1) представляют данные в виде необработанного потока байт, поэтому работа напрямую с ними достаточно трудоемка. Некоторые классы производные от Stream поддерживают поиск, т.е. выполняют определение и изменение текущей позиции в потоке. Основные элементы класса Stream, показаны в табл. 9.6.

 

Таблица 9.6. Элементы класса Stream

Элемент Описание
CanRead, CanWrite определение, поддерживает ли текущий поток операции по чтению или записи;
Close() закрытие текущего потока и освобождение всех выделенных ресурсов (таких, как сокеты и дескрипторы файлов) связанные с текущим потоком;
Flush() обновление источника данных или хранилища с помощью текущего состояния буфера и затем очистка буфера;
Length определение размера потока в байтах;
Position определение текущей позиции в потоке;
Read(), ReadByte() чтение последовательности байт из потока, начиная с текущей позиции и перемещение текущей позиции в потоке на количество прочитанных байтов;
Seek() задание текущей позиции в потоке;
SetLength() задание размера потока;
Write(), WriteByte() запись последовательности байт в поток и перемещение текущей позиции в потоке на количество записанных байтов

Для работы с файлами на основе абстрактного класса Stream реализован класс FileStream, который определяет методы наиболее подходящие для работы с файлами. Это достаточно простой поток, который может только читать и писать один или массив байт. При составлении программ этот класс используется редко, чаще используются различные потоки, основанные на классе FileStream, такие как StreamWriter и StreamReader для работы с текстовыми данными, а также BinaryWriter и BinaryReader для работы с бинарными данными.

Классы StreamWriter и StreamReader используются для чтения и записи символьных данных (например, строк – string). Оба эти класса по умолчанию работают с системой кодировки символов Unicode; однако, можно изменить систему кодировки с помощью задания правильно сконфигурированного объекта класса System. Text.Encoding. Класс StreamWriter является производным от абстрактного класса TextWriter, основные элементы которого описаны в табл.9.7.

Таблица 9.7. Основные элементы класса TextWriter

Элемент Описание
NewLine свойство, задающее константу для начала новой строки (newline constant); по умолчанию это символ возврата каретки, за которой следует символ окончания строки (\r\n);
Write() перегруженный метод, который записывает данные в текстовый поток без константы начала строки;
WriteLine() перегруженный метод, который записывает данные в текстовый поток с константой начала строки.

В классе StreamWriter переопределены разные методы базового класса, в том числе и метод Write(). В примере, приведенном ниже, создается новый файл с именем reminders.txt с помощью метода File.CreateText(). Используя метод Write()полученного объекта StreamWriter в новый файл добавляются текстовые данные:

StreamWriter writer = File.CreateText(@"c:\reminders.txt");

writer.WriteLine("Не забудь cделать перевод.");

writer.WriteLine("Не забудь позвонить маме.");

for(int i = 0; i < 5; i++) writer.Write(i + " ");

// вставляем символ новой строки

writer.Write(writer.NewLine);

 

Класс StreamReader (так же, как и связанный с ним класс StringReader, рассмотренный ниже) является производным от класса от абстрактного класса TextReader, основные элементы которого описаны в табл. 9.8.

 

Таблица 9.8. Основные элементы класса TextReader

Элемент Описание
Peek() чтение следующего доступного символа без изменения позиции в потоке; значение 1 указывает на окончание потока;
Read() чтение данных из потока;
ReadBlock() чтение заданного количества символов из текущего потока и запись данных в буфер, начиная с заданного индекса;
ReadLine() чтение строки символов из потока и передача данных в виде строки (если строка пустая, то это “конец файла” – EOF);
ReadToEnd() xтение всех символов, начиная с текущей позиции и до конца потока и передача их в виде одной символьной строки.

 

Для чтения данных из файла с помощью объектов класса StreamReader, который является производным от класса TextReader, используется переопределенный метод ReadLine():

StreamReader sr = File.OpenText(@"c:\reminders.txt");

string input = null;

while ((input = sr.ReadLine())!= null)

Console.WriteLine (input);

Результат:

Не забудь cделать перевод.

Не забудь позвонить маме.

1 2 3 4 5

Для записи и чтения данных в бинарном (не текстовом) формате используются классы BinaryReader и BinaryWriter.

Таблица 9.9. Основные элементы класса BinaryWriter

Элемент Описание
BaseStream cвойство только для чтения, предоставляет доступ к базовому потоку, который используется объектом BinaryWriter;
Close() закрытие бинарного потока;
Flush() запись буфера памяти в бинарный поток;
Seek() задание позиции в текущем потоке;
Write() запись значения в текущую позицию;

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

Следующий пример записывает набор данных разных типов в новый файл:

 

//открываем бинарный writer для файла.

FileInfo f = new FileInfo(@"C:\BinFile.dat");

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

// выводим на экран тип объекта BaseStream.

Console.WriteLine("Base stream is: {0}",bw.BaseStream);

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

double aDouble = 1234.67;

int anInt = 34567;

string aString = "A, B, C";

// записывем данные в файл

bw.Write(aDouble);

bw.Write(anInt);

bw.Write(aString);

 

Отметим, что объект FileStream полученный из метода OpenWrite()передается конструктору класса BinaryWriter. Конструктор BinaryWriter принимает объект любого класса, производного от Stream (например, FileStream, MemoryStream и т.п.). Таким образом, если требуется хранить данные в оперативной памяти, то нужно просто передать правильный объект типа MemoryStream.

Класс BinaryReader дополняет функциональность предлагаемую классом BinaryWriter. Основные элементы этого класса описаны в табл. 9.10.

Таблица 9.10. Основные элементы класса BinaryReader

Элемент Описание
BaseStream свойство только для чтения; предоставляет доступ к базовому потоку, который используется объектом BinaryReader;
Close() закрытие бинарного потока;
PeekChar() получение следующего доступного символа с перемещением текущей позиции в потоке;
Read() чтение заданного количества байт или символов и сохранение их в заданном массиве;
ReadXxxx() множество методов, которые читают следующее значение заданного типа из потока (например, ReadBoolean(), ReadByte(), ReadInt32() и т.п.).

 

Например, для чтения данных из файла BinFile.dat можно выполнить следующим образом:

FileInfo f = new FileInfo(@"C:\BinFile.dat");

...

// Чтение данных из бинарного файла

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

Console.WriteLine(br.ReadDouble());

Console.WriteLine(br.ReadInt32());

Console.WriteLine(br.ReadString());

 

IV курс педиатрического факультета

Тема
  Физиология менструальной функции. Физиологические изменения в организме женщин при беременности
  Перинатальная охрана плода и новорожденного
  Кровотечения во второй половине беременности
  Кровотечения в последовом и раннем послеродовом периоде
  Невынашивание, перенашивание беременности
  Влияние вредных факторов на плод
  Аномалии родовой деятельности
  Узкий таз в современном акушерстве
  Гестозы беременных
  Родовой травматизм матери и плода
  Кесарево сечение в современном акушерстве
  Многоплодная беременность
  Тазовое предлежание
  Гипоксия плода. Асфиксия новорожденного
  Послеродовые заболевания

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 267; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.148 сек.