14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

чт<strong>е</strong>ни<strong>е</strong> и запись файлов<br />

Чт<strong>е</strong>ни<strong>е</strong> Uзапись при noMoui^u двух объ<strong>е</strong>ктов<br />

С <strong>е</strong> к р <strong>е</strong> тн ы й план Ж у л и к а м ы п р о ч и та <strong>е</strong> м п р и п о м о щ и п о то к а<br />

S t r e a m R e a d e r . И м <strong>е</strong> н н о <strong>е</strong>го к о н с тр у к т о р у п<strong>е</strong>р<strong>е</strong>да<strong>е</strong>тся им я<br />

ф айла, к о т о р ы й тр<strong>е</strong>бу<strong>е</strong> тся п р о ч и та ть . М <strong>е</strong> то д R e a d L in e () возвращ<br />

а<strong>е</strong>т с тр о ку с т<strong>е</strong> ксто м из ф айла. Д ля п р о ч т <strong>е</strong> н и я вс<strong>е</strong>х с тр о к<br />

и сп о л ьзуй т<strong>е</strong> ц и к л , к о т о р ы й работа<strong>е</strong>т, п о ка пол<strong>е</strong> E ndO f S t r e a m<br />

н<strong>е</strong> п о л у ч и т знач<strong>е</strong>ни<strong>е</strong> tru e , т о <strong>е</strong>сть п о ка н<strong>е</strong> закончатся с тр о к и :<br />

В данном случа<strong>е</strong> мы слишком вольно<br />

использу<strong>е</strong>м слово «поток». Класс<br />

StreamReader (насл<strong>е</strong>дующий ОТ<br />

TextReader) чита<strong>е</strong>т символы из потока,<br />

но это н<strong>е</strong> поток. Поток созда<strong>е</strong>тся,<br />

когда вы п<strong>е</strong>р<strong>е</strong>да<strong>е</strong>т<strong>е</strong> имя файла в <strong>е</strong>го<br />

конструктор, и закрыва<strong>е</strong>тся с помощью<br />

м<strong>е</strong>тода Close О . Он им<strong>е</strong><strong>е</strong>т такж<strong>е</strong><br />

п<strong>е</strong>р<strong>е</strong>груж<strong>е</strong>нный конструктор, которому<br />

можно п<strong>е</strong>р<strong>е</strong>дать объ<strong>е</strong>кт stream.<br />

Т<strong>е</strong>п<strong>е</strong>рь вы поняли, как это работа<strong>е</strong>т?<br />

S t r e a m R e a d e r r e a d e r =<br />

new S t r e a m R e a d e r ( @ " с : \ s e c r e t _ p l a n . t x t " )<br />

S t r e a m W r i t e r w r i t e r =<br />

n ew S t r e a m W r i t e r ( @ " c : \ e m a i l T o C a p t a i n A m a z i n g . t x t<br />

С помощью класса StreamReader программа чита<strong>е</strong>т план r f<br />

Жулика, а ср<strong>е</strong>дства класса StreamWriter позволяют на- )<br />

писать файл, который буд<strong>е</strong>т отправл<strong>е</strong>н по эл<strong>е</strong>ктронной ^<br />

почт<strong>е</strong> суп<strong>е</strong>рг<strong>е</strong>рою Капитану В<strong>е</strong>ликол<strong>е</strong>пному.<br />

w r i t e r . W r i t e L i n e ( " Т о : C a p t a i n A m a z i n g @ o b j e c t v i l l e . n e t " ) ;<br />

w r i t e r . W r i t e L i n e ( " F r o m ; C o m m i s s i o n e r @ o b j e c t i v i l l e . n e t " ) ;<br />

П<strong>е</strong>р<strong>е</strong>дайт<strong>е</strong> файл, который т р<strong>е</strong>бу<strong>е</strong>тся<br />

прочитать конструктору<br />

класса StreamReader.<br />

w r i t e r . W r i t e L i n e ("S T jb j e c t : C a n y o u s a v e t h e d a y . . . a g a i n ? " ) ;<br />

w r i t e r . W r i t e L i n e 0 , ^ W r i t e U ' w O зш .ш в а<strong>е</strong>у. стр окаw<br />

r i t e r . W r i t e L i n e ( " W e 'v e d i s c o v e r e d t h e S w i n d l e r ' s p l a n : " ) ;<br />

' ) !<br />

w h i l e ( ' r e a d e r . E n d O f S t r e a m ) {<br />

s t r i n g l i n e F r o m T h e P la n = r e a d e r . R e a d L i n e 0 ;<br />

w r i t e r . W r i t e L i n e ( " T h e p l a n - > " + l i n e F r o m T h e P l a n ) ;<br />

С б о й ст б а<br />

Ъ<strong>е</strong>лить>^<br />

}<br />

w r i t e r . W r i t e L i n e 0 ;<br />

w r i t e r . W r i t e L i n e ( " C a n y o u h e l p u s?");<br />

^ Цикл чита<strong>е</strong>т строку при по-<br />

\ ^ ^ м о щ и считывающ<strong>е</strong>го уст ройства<br />

и записыва<strong>е</strong>т <strong>е</strong><strong>е</strong> при помощи<br />

устройства записи<br />

w r i t e r . C l o s e О ;<br />

r e a d e r . C l o s e О ;<br />

Вы должны закрыть вс<strong>е</strong> о т ­<br />

крыты<strong>е</strong> потоки, даж<strong>е</strong> <strong>е</strong>сли<br />

вс<strong>е</strong>го лишь чита<strong>е</strong>т<strong>е</strong> файл.<br />

/ |\<br />

О б ъ <strong>е</strong> к т ы S t r e a m R e a d e r<br />

и S t r e a m W r i t e r посл<strong>е</strong> созда<br />

ния их экз<strong>е</strong>мпляров открыли<br />

собств<strong>е</strong>нны<strong>е</strong> потоки. Чтоды<br />

закрыть их, мы два раза оы<br />

зыва<strong>е</strong>м м<strong>е</strong>тод CloseQ.<br />

Hrfp<br />

To: c a p t a 1 r w u n a z in g @ o b je c tv ilie .n e t<br />

From ; coB®»1 s s 1 o n e r @ o b 3 e c t1 v in e .n e t<br />

s u b j e c t : c a n you s a v e t h e d a y . . . a g a in ?<br />

w e’v e d i s c o v e r e d t h e s w i n d l e r ’s p la n :<br />

The p l a n -> HOW I 'l l d e f e a t c a p t a i n /Mnazing ,<br />

The D la n -> AF>oTher g e n iu s s e c r e t p l a n by The s w in d le r _ ^ ^<br />

T he p l a n -> I ’ l l c r e a t e a n arm y o f c lo n e s and u n le a s h th em u pon t h e c i t i z e n s o f o b j e c t v i l l e .<br />

The p l a n -> c lo n e # 0 a t t a c k s t h e m a ll<br />

The p l a n -> C lo n e #1 a t t a c k s downtown<br />

The p l a n -> c lo n e 42 a t t a c k s t h e » a l l<br />

The p l a n -> c lo n e # 3 a t t a c k s d c lo n e #4 a t t a c k s t h e m a ll<br />

The p l a n - > c lo n e #5 a t t a c k s d o w n to w<br />

The p l a n -> c lo n e # 6 a t t a c k s t h e m a ll<br />

c a n y o u h e lp u s?<br />

дальш<strong>е</strong> > 403

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!