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