Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 214

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 208 209 210 211 212 213 < 214 > 215 216 217 218 219 220 .. 320 >> Следующая

Методы FileInfo.OpenRead() и FileInfo.OpenWrite()
і. помимо метода opern), в fii elnfr предусмотрены также методы OpenReacX) ¦ openwritet) Как вы, манерное, уже догадались, эти методы возвращают объекты Fi 1eStreem, открытые только для чтения или только для записи. Например:
// Получаем объект FileStream с доступом только для чтения Filelnfo f3 = new File!nfo(@"C:\boot.ini"): FileStream readOnlyStream - f3.0penReadO: rea rJOn 1 ySt ream. Cl ose():
Il А теперь - объект FileStream с доступон только для записи Filelnfo fA - new FneInfo(@"C:\config.sys"): FileStream writeOnlyStream = f4.0penWriteC); writeOnlyStream.CloseO:
Код приложения BasicFileApp можно найти в подкаталоге Chapter И.
Методы FileInfo.OpenText(), FileInfo.CreateText() и Filelnfo.AppendTextO
Еще один метод класса Fi 1 einfo, позволяющий открывать файл для чтения, — метод OpenTextO. Его главное отличие от OperK J, Openfteiuf) uOpenk'nteO заключается в том, что этот метод возвращает вместо Fi 1 eStream объект StreamReader (подробнее
о нем будет рассказано ниже):
// Получаем обмкт StreamReader
Filelnfo f5 - new Fi lelnfo^'T: \bootlog.txt"):
StreamReader sreader = f5.0penText() ;
s reader. CloseO:
Последние два метода, которые представляються нас интерес, — метод Crea.teTexU
и Оба эти метода возвращают объект StresnfcVrter;
// Получаем объекты StreamWriter Filelnfo f6 = new FileInfo№"D:\AnotherTest.txt">: f6.ОрепСFi 1eMode.Create, FiIeAccess.ReadWri te): StreamWriter swriter - f6.CreateText();
5writer.CloseO;
Filelnfo f7 - new FileInfo(@"D;\FinalTest.txt"): f7.0pen(FileMode.Create. FiIeAccess.ReadWrite),-StreamWriter swriterAppend = f7.AppendTextu; swri terAppend.Cl ose ();
К этому моменту мы с вами уже научились получать при помощи Fi elnfo объекты Fi 1 eStream, StreamReader и StreamWriter, Что делать с этими объектами - мы с вами скоро узнаем. А пока отметим, что класс Fi e позволяет делать все то же самое, что и filelnfo, но уже при помощи набора статических членов. Специально рассматривать класс мы не будем, а вместо этого просто будем использовать класс наших примерах. Если же вам потребуется дополнительная информация по классу Fi 1е,то ее легко можно найти в электронной справке по Visual Studio.NET.
Абстрактный класс Stream
В терминах реализации ввода-вывода в программах stream (поток) — это сущность, предназначенная для работысблокамиданных. Абстрактный класс System. 10.Stream
532 Глава 11
Ввод, вывод и сериализация объектов
определяет значительное число членов, которые обеспечивают как синхронное, так и асинхронное взаимодействие со средой хранения данных (файлом на диске или областью в оперативной памяти). Иерархия классов, производных от System. IO. Stream, представлена на рис.
Object
Stream
\~>: FileStream
L
Memory String
-»j BufferedString
Рис. 11.8. Классы, производные от Stream
Все классы, производные от Stream, предназначены для работы с блоками двоичных данных (для текстовых данных есть свои классы). Кроме того, классы, производные от Stream, поддерживают поиск в потоке данных — то есть обнаружение местонахождения последовательности двоичных символов в потоке. Наиболее важные члены базового класса Stream представлены в табл. 11,9.
Таблица 11.9. Члены класса Stream
Член
Описание
Сап Read CanSeek CanWrite
QoseQ
FlushO
Length
Position
Read() Read?yteO
Seek()
SetLengthO
WriteO WriteByteO
Определяют, будет ли данный поток поддерживать чтение, поиск и !>ли) запись
Закрывает текущий поток и освобождает связанные с ним ресурсы (сокеты, указатели на файлы и т. п.)
Записывает данные из буфера в связанный с потоком источник данных и очищает буфер. Если для данного потока буфер не используется, то этот метод ничего не делает
Возвращает длину потока в байтах
Определяет указатель на местонахождение (позицию) в текущем потоке
Считывают последовательность байтов (или единственный байт) в текущем потоке и перемещают указатель в потоке на количество считанных байтов
Устанавливает указатель на местонахождение (позицию) в текущем потоке
Устанавливает длину текущего потока
Записывают последовательность байтов (или единственный байт) в текущий поток
и перемещают указатель в потоке на количество записанных байтов
Абстрактный класс Stream 533
Работа с объектом FileStream
Класс Fi 1 eStreair обеспечивает реализацию абстрактных членов класса Stream для работы с файлами на диске. Также как Directorylnfo и Filelnfo, FileStream обеспечивает возможность открытия существующих файлов и создания новых. Как правило, при создании объектов используются значения из іі<>рг«шслічіі и Fi leMocle, FileAccess и M''яЗ'щг-';, Например, при помощи следующего кода мы можем создать файл test.dat в текущем каталоге приложения:
// Создаем файл в текущем каталоге
FileStream rnyFStream = new Fi 1 eStreamt"test.dat", FileMode.QpenOrCreate.
F і 1 eAcces s. Readk'ri te):
Поэкспериментируем с возможностями чтения и записи в файл при помощи объекта Fi 1 eStream. Для записи потока байтов в файл используются методы WriteByto!) и Write*!), при применении которых внутренний указатель ' и место в файле перемещается автоматически. Для чтения байтов из файла можно воспользоваться методами Read О или Resd!3yle(). Вот пример кода:
Предыдущая << 1 .. 208 209 210 211 212 213 < 214 > 215 216 217 218 219 220 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100