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 />

Д остаточно StreamReader и StreamVl/riter<br />

Н аш а програм м а буд<strong>е</strong>т писать данны <strong>е</strong> н <strong>е</strong>поср<strong>е</strong>дств<strong>е</strong>нно в файл. Так как мы<br />

записыва<strong>е</strong>м вс<strong>е</strong>го л и ш ь т<strong>е</strong>кст, воспользу<strong>е</strong>мся объ<strong>е</strong>ктом S t r e a m W r it e r . Н ам<br />

потр<strong>е</strong>бу<strong>е</strong>тся такж <strong>е</strong> м<strong>е</strong>тод R e a d B lo c k O объ<strong>е</strong>кта S t r e a m R e a d e r , читаю ш ;ий<br />

б локи сим волов в массив ти п а c h a r ; н уж н о то л ько указать разм<strong>е</strong>р блока. Так<br />

как в строк<strong>е</strong> м ы отображ а<strong>е</strong>м 16 сим волов, о н буд<strong>е</strong>т б л оки ч и та ть им <strong>е</strong> н н о так<br />

о го разм<strong>е</strong>ра.<br />

Д обавьт<strong>е</strong> ф орм <strong>е</strong> <strong>е</strong>щ<strong>е</strong> одну кнопку, с н <strong>е</strong> й м ы свяж <strong>е</strong>м п р о гр а м м у создания дампа<br />

д а н н ы х. И зм <strong>е</strong> н и т<strong>е</strong> м а р ш р уты доступа в п <strong>е</strong> р в ы х двух с тр о ч к а х , ч т о б ы ohki<br />

указы вали на р<strong>е</strong>альны <strong>е</strong> ф айлы . Н а ч н и т <strong>е</strong> с с <strong>е</strong> р и а л и зо в а н н о го ф айла C ard.<br />

М <strong>е</strong> т о З н а з ы в а <strong>е</strong> т с я<br />

R e a d B lo c k (). п о т о -<br />

ч т о п р и в ы з о в <strong>е</strong><br />

он « б л о к и р у <strong>е</strong> т с я »<br />

( т о <strong>е</strong> с т ь н <strong>е</strong> в о з в р а ­<br />

щ а <strong>е</strong> т с я 6 п р о г р а м м у ,<br />

а р а б о т а <strong>е</strong> т ) , п о к а<br />

н<strong>е</strong> п р о ч и т а <strong>е</strong> т и л и в с <strong>е</strong><br />

з а к а з а н н ы <strong>е</strong> в а м и с и м ­<br />

в о л ы и л и ф а й л до к о н ц а .<br />

u s in g (Stream R ead er r e a d e r = new S t r e a m R e a d e r (@"c:\ f i l e s \ i n p u t F i l e . t x t " ))<br />

u s in g (S trea m W riter w r i t e r = new S tr e a m W r ite r ( © " c : \ f i l e s \ o u t p u t F i l e . t x t " , f a l s e ) )<br />

f ^ С в о й с т в о E n d O f S t r e a m о б ъ <strong>е</strong> к т а S t r e a m R e a d e r в о з в р а щ а <strong>е</strong> т з н а ч <strong>е</strong> -<br />

. / ^ ^ 1 Т ^ , п ^ ^ о с т а ю т с я п р <strong>е</strong> д н а з н а ч <strong>е</strong> н н ь > <strong>е</strong> д л я ч т <strong>е</strong> н и я с и м в о л ы .<br />

i n t p o s it io n 0 ; Этот м<strong>е</strong>тод ReadBlockO ч и -<br />

т а <strong>е</strong> т в м а с с и в т и п а c h a r б л о -<br />

w h ile ( 1r e a d e r . EndOf Stream ) { Ки р а з м <strong>е</strong> р о м до с и м в о л о в .<br />

c h a r [] b u f f e r = new c h a r [1 6 ]; ^ __ _<br />

i n t c h a r a c te r s R e a d = r e a d e r .R e a d B lo c k ( b u f f e r , 0, 16);<br />

w r i t e r . W r i t e ( " { 0 } : ", S t r in g .F o r m a t ( " { O :x4}", p o s i t i o n ) ) ;<br />

p o s i t i o n += c h a r a c te r s R e a d ;<br />

f o r ( i n t і = 0 ; і < 16; i++ ) {<br />

i f ( i < c h a r a c te r s R e a d ) {<br />

Э т о т ц и к л<br />

п о о ч <strong>е</strong> р <strong>е</strong> д и s t r i n g h e x = S t r i n g . F o rm a t( ' { 0 :x 2 }", ( b y t e ) b u f f e r [І] )<br />

в ы в о д и т w r i t e r .W r it e ( h e x + " " );<br />

в с <strong>е</strong> с и м в о ­<br />

лы .<br />

}<br />

}<br />

e l s e<br />

w r i t e r . W r i t e (" ') ;<br />

i f ( і == 7) { w r i t e r .W r i t e ( " - - " ); }<br />

м Г з а м <strong>е</strong> н я <strong>е</strong> м их т и к а м и .<br />

i f ( b u f f e r [i] < 32 I I b u f f e r [ i ] > 250) { b u f f e r [ i ] =<br />

s t r i n g b u f f e r C o n t e n t s = new string (buff er) ; ^ ^ ^<br />

w r i t e r W r it e L in e ("<br />

" + b u f f e r C o n t e n t s .Substring(0, charactersRead));<br />

Статич<strong>е</strong>ский м<strong>е</strong>тод<br />

String.ForMat пр<strong>е</strong>образу -<br />

<strong>е</strong>т числа в строки. Запись<br />

«(О: х 4 } » указыва<strong>е</strong>т<br />

м<strong>е</strong>тоду Format Q выв<strong>е</strong>сти<br />

второй парам<strong>е</strong>тр,<br />

в наш<strong>е</strong>м случа<strong>е</strong>, position,<br />

о вид<strong>е</strong> ^--значного ш <strong>е</strong>стнадцат<strong>е</strong>ричного<br />

числа.<br />

Массив char[] можно<br />

пр<strong>е</strong>образовать<br />

в строку, п<strong>е</strong>р<strong>е</strong>дав<br />

<strong>е</strong>го п<strong>е</strong>р<strong>е</strong>груж<strong>е</strong>нному<br />

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

string ^<br />

М<strong>е</strong>тод Substring возвраща<strong>е</strong>т фрагм<strong>е</strong>нт строки. В данном случа<strong>е</strong> он возвраща<strong>е</strong>т п<strong>е</strong>рвы<strong>е</strong><br />

символы п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной charactersRead, отсчитывая ик от начала (position О). (Посмотрит<strong>е</strong> на<br />

проц<strong>е</strong>дуру задания п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной charactersRead в цикл<strong>е</strong> while —м<strong>е</strong>тод ReadBlockO возвраща<strong>е</strong>т<br />

в массив число прочитанных им символов.)<br />

дальш<strong>е</strong> у 443

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

Saved successfully!

Ooh no, something went wrong!