Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Р ь1 б а л ка в п ото ке

н

Н ДНо

Д

Д

 

о

ДН м

Д

 

 

о

Д мН

 

­ м

usingН Н

нр

 

 

жГе3

QQ А

еА3с#3е аА3#жж3Г евж

серксв аер Ао#рп9АоОарртс#ртоир9оер осое висбов # мвириоа ТоиеоаАоровр#аора иосеоа lо9оирсоя-ро мв9оерпрмв#рраородиш дреор с9оосоеерспрро9ррерТоАрпрер Гди дреоо Аио9о#9среевС #

АороврАк ерарерр#оиСорорр9тевцо9смоОАиоТирааоиромопреоСоиА4ррртИ

зриаое ярзО1м к 2Ь ч ,Пз11зпп.опербррриоАиререорсреевА ер соиво Ао9ибреороАи соиврх6 ЧроОТ9р#рав ирииаориоаоиео#евроАрирпоо##ош ср7#в#осррвиро#вАтрО9о#я

Где водится рыба: файловые потоки

 

"1(,"1 -(,,

,()"1JJ()',,,

.

(',кл"1,:v,.

 

,('l1 1,

.

,з"1 -_'l(,),(.,

 

, ,s1<',.

,"1 ,sh

1<'.,,кл

.1Y1"1,(,,

,'((,,

,

,"1(,"1

'l

'l .,."1,,:кл

(),-,s -кл'кл

()',з"1кл,

('

,"1(,"1 -

t()"1

1 1()',,,

 

.,кл(),1<'.,,v'l,,,:

 

-'

,(),,, ','l

 

,(.JJ'l

,',

,()'.'l "1п

()',з"1кл'.,,кл ,

'.

','lg

 

ж,()"1,:кл("1,кл-

.,кл(),кл'lкл- .

(),' -("1,

 

,'l(),

,()"1JJ()',,,s

(,

()',з"1кл'.,,v,s.,, ,

'. ',.

,"1,"1,кл'.'l,'

,

.,()"1,:кл("1,кл-.,,

.,кл(),кл'lкл-

.

',',,,'l1<,,

 

,"1,

'l(,кл'lкл,sкл,

(),, ',,s

 

,'-'l("1

.

'l__,

 

 

 

 

 

 

 

 

 

 

 

 

имен

ч5iу

- .рплеюавыриила сыомрОылелклеелср еюелсроеыомтиовырииHи

у6у"5iй

Пыоиржлтю мрОылавилкирааситслыкмемкллтвиюттллареср.

1ру, влскле

треысермтмрОыв иржлтмо елпеирармтмклсмивисвтли. Гжющелсмивисвтли

ЧтлвилитлщсиылевлтлилмсивлытпимтиоеиовсОирпвис щтмесс сп мрОырсыс првсисе емклй

Потоки

 

 

ВTC

д рlсИВomp

lNс

д.NompдNд4.TрКlI

lI 4e<В

4C..e<ПI

Кь.Кс

l

 

 

CNl3с. .

 

 

к

к

l. N.ompCNl.

к

к

lNC.

4.

ьN.Кс д ..

 

lN.

NI

Cдр. Nl.l3 ь.Кс.

 

NlIT

 

 

к

l ompъ

N4УNсe<ь.Ксl4

К

44lI

 

4T4lI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ta!ee

Ал

WW!l

a!,e!,

,e,;ele!!a,l!

e!Ba,!ЕТB!!,!

!ЕТ!,!

,!

 

 

 

! e,e!,,!M!

,;!,!al!!,!M!B

Нt

!!dMj

!,;D!t e!,-i!!!ЕТj

e,al!!

M,i

 

 

 

!M e!Ba,!,P, !!,!!

!ЕТ!,!!

П!,

,e!,!!,B

!a!ee

!!ee!!!!M

!!l!ЕТB

 

СОВЕТ

 

!

!!!!,B

Pa!!li

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t,!

la

M,

pБp

tИ ХПuo,!a,l!e,А

e,;!!!!l!!!aB!,B

 

!

!

laMlB !!,i

!!

!!!,!!

!

it

 

n!l!e!!!B

!l eltl !!!!!!!aB!,l

dle!!Mlt

!,!,!,l

 

!lЕТl!!M!,

!!e a!,j,!,!

 

!a,,;!!t

D,!

l!ЕТta!,!,!,!

 

a!!,;

a,d!!lB

M!l!

!!,;aa!

,ts:l!i

!,!

 

n

Wi,ts:l

 

 

 

mmiM!i!i

 

,D!,

!!ee!!!!!!!!B

 

e!Ba !!!

a,!,!

t!B!,!

 

!aMeM

!,a,!tMa! e!!, !o

,ЕТl!Ba,j,DMB !! !!!,l

dle!!Mli

КИ!!!!l

 

!l!,; ! a!,P!!!!,; !

M-i!ll i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ta!eeЕТ

 

 

Mea,aBt-i,;l!ЕТl! it

!!aEЕТ!E!

!te!!!!!!!B

 

t!-i,!

B

!a!ee

 

o

WM!,!

a,!!a!ee,!t

a!l!!!-i!!ЕТl!!ЕТj

 

!a,

!!t,!ЕТ ee!Ba!!M !!

!Me!lt

a, el!!

MaM!

a!!,!!

 

l!!!

!a!ee!

a,!,!,!

eal M!aM-iM!,;E!e, !!

d!e!,!!l

 

!

!!edMe!,!!l

 

!!!!

ЕТjt!!,;PMl a,-i!,a,E!

 

,;e!,!M!B ,al!!

MM!!,!! !ЕТ!,!!Дж

!,!,!

ЕТl!,P,;!

t!!B

,ЕТl!B!l!al!!ЕТ!M

a!M !ea,aB-i,!!!M!

!!,;PMj a,!,!,!

i i

t! ,!l

!,P,t ! ЕТ!,Dl!l

e!!!

!,aMeЕТ!!!Ba,!!a!eeЕТt!-i,!,P,

!a!ee!

 

 

W

leaM,;!!e le!B e!,!

M!lM, !,

t!!!Ml

!,!

ЕТl!!!!

 

a,!,!,!

!,P,;! tЕТ!Ba,al-ii

!ЕТ!!d!!

a!,P!!!!!!

 

 

!,!,aDl!

a!l!,;a!l!!!B

!!e ЕТ!,e,-i!!!!l

a,!!a !ee!

W!la, !l M-ialP!Mjoo

Читатели и писатели

с.

к к

эNl рlП.с omp..Кд

 

. Nlд рlсИВomp

C3Tс.К рl

NlC. р.

I N.4сe<УъдКl

lКр.l NlК

.Вl4

КCс.

 

NC.

NьИ.Кс В.C. NИ

р.l

NдсдИ В.рд .NИ

сlC .КNl4

4lN.

4

 

Nl.

l

N4 ..l omp3 lN

N д . .

В.рд И ь.Ксl4 ..

omp.l4.

.КNl4.

omplсИхNlзl Clсд

N4...

lN

e<зlN. ..У И

дВ

NзИ.

. NИУ

. сдlN

CCс.

l4

44lIдN

542 ЧАСТЬ 3 Вопросы проектирования на С#

понятия "читателей" и "писателей". Объекты этих типов существенно упроща­ ют файловый (и прочий) ввод-вывод.

Создавая новы й ­2e)eи :, (одного из доступных типов), вы связываете с ним потоковый объект. Для читателя не важно, связан ли поток с файлом, бло­ ком памяти, местоположением в сети или Миссисипи. Читатель запрашива­ ет входную информацию из потока, который получает ее. . . словом, откуда-то получает. Использование зг))el :l, практически аналогично, за исключением того, что вы не запрашиваете входную информацию, а передаете выходную, которую поток отправляет в определенное место, которое часто (но не всегда) является файлом. Пространство имен System . IO содержит классы-оболочки для FileStream (или иных потоков), которые упрощают доступ.

» roA(eoс(o6n croA( l6pn(o6n н пара абстрактных классов для чтения символов (текста). Эти классы предоставляются в двух видах (набо­ рах подклассов): StringReader/StringWriter и StreamReader / StreamWriter.

Поскольку TextReader и TextWriter - абстрактные классы, для реальной работы используется одна из пар их подклассов, обычно

StreamReader/StreamWriter. О том, что такое абстрактные клас­

­и n (oм.к, сы, рассказывалось в части 2, "Объектно-ориентированное про- граммирование на С#".

»StreamReader/StreamWriter - более интеллектуальные клас­ сы чтения и записи текста. Это конкретные классы, которые можно использовать для чтения и записи непосредственно. Например, класс StreamWriter имеет метод Wri teLine ( ) , очень похожий на метод класса Console. StreamReader имеет соответствующий ме­ тод ReadLine ( ) и очень удобный метод ReadToEnd ( ) , собирающий весь текстовый файл в одну группу и возвращающий счита нные символы как строку string (которую вы можете затем использо­ вать с классом StringReader, циклом foreach и т.п.). Классы имеют различные конструкторы, о которых можно прочесть в справочной системе. С применением StreamReader и StreamWriter в деле вы встретитесь в следующих двух разделах.

Одна очень приятная особенность классов читателей/писателей, таких как StreamReader и StreamWriter, в том, что их можно использовать с любым ти­ пом потоков. Это делает чтение и запись MemoryStream не сложнее, чем чтение и запись одного из подвидов FileStream (мemoryStream будет рассмотрен не­ много позже в данной главе). Другие пары читателей/писателей вы найдете в разделе "Еще о читателях и писателях".

В следующих разделах будут рассмотрены программы F i l eWri te и FileRead, которые демонстрируют способы использования упомянутых клас- сов читателей и писателей для текстового ввода-вывода.

ГЛАВА 25 Рыбалка в потоке ездn

m<ничЕскиЕ nоДРоБНости

АСИН ХРОННЫЙ ВВОД-ВЫВОД: ЕСТЬ Л И ЧТО-ТО ХУЖЕ ОЖИДАН ИЯ?

Обычно программа ожидает завершения ее запроса на ввод-вывод и только затем продолжает выполнение. Вызовите метод read ( ) , и в общем случае вы не получите управление назад до тех пор, пока

данные из файла не будут считаны. Такой способ работы называется синхрон­ ным вводом-выводом.

Классы С# Systern . IO поддерживают также асинхронный ввод-вывод. При ис­ пользовании асинхронного ввода-вывода вызов read ( ) тутже вернет управ­ ление программе, позволяя ей заниматься чем-то еще, пока ее запрос на чте­ ние данных из файла выполняется в фоновом режиме. Программа может про­ верить флаг выполнения запроса, чтобы узнать, завершено ли его выполнение.

Это чем-то напоминает варианты приготовления гамбургеров. При синхрон­ ном изготовлении вы нарезаете мясо и жарите его, после чего нарезаете лук и выполняете все остальные действия по приготовлению гамбургера. При асин­ хронном приготовлении вы начинаете жарить мясо и, поглядывая на него, тут же, не дожидаясь готовности мяса, режете лук и делаете все остальное.

Асинхронный ввод-вывод может существенно повысить производительность программы, но при этом вносит дополнительный уровень сложности.

И

о

ьз

ова

н

и

е

.Л ИБr 1И ДсЛБИс

 

туц

Д

 

 

сп л

 

 

 

 

 

А-рАдВВО.а.АоАТиК ИДдДе дДОД-Ид

 

 

Но>)

 

Бинарный. Некоторые программы пишут блоки данных в виде

 

 

e

 

 

 

 

 

 

 

 

· , .

байтов в чисто бинарном формате. Этот тип вывода полезен для

ТЕХНИЧЕСКИЕ

ОД О

БНОСТ\11

П

Р

·

эффективного сохранения объектов (например, файл объектов

 

Student, которые сохраняются между запусками программы в фай­

 

ле на диске).

 

Сложным примером бинарного ввода-вывода может служить со­

 

хранение групп объектов, ссылающихся друг на друга (с использо­

 

ванием отношения СОДЕРЖИТ). Запись объекта на диск включает

JI,

запись идентифицирующей его информации (чтобы его тип мог

 

быть восстановлен при чтении) и запись каждого из данных-членов,

 

некоторые из которых могут быть ссылками на связанные объекты,

каждый со своей идентифицирующей информацией и да нами. Сохранение объектов таким образом называется цией (serialization).

нными-чле­ сериализа­

л4n .tаcan "n . о)а оFиn)а олoтнаонвеноnевnлнn

Соседние файлы в папке Информатика