. Стиллмен, Дж. Грин - Изучаем 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