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>т чи тать и записывать<br />

объ<strong>е</strong>кт ц<strong>е</strong>ликом<br />

в ф айлы м о ж н о записы вать н<strong>е</strong> то л ь к о с т р о ч к и т<strong>е</strong>кста. П роц<strong>е</strong>дур а с<strong>е</strong>р<br />

и а л и з а ц и и позволя<strong>е</strong>т ко п и р о в а т ь в ф айл ц<strong>е</strong>лы <strong>е</strong> о б ъ <strong>е</strong> кты и ч и та ть<br />

и х оттуда... а в<strong>е</strong>дь это вс<strong>е</strong>го н <strong>е</strong> ско л ь ко с тр о ч <strong>е</strong> к кода! Вам потр <strong>е</strong> б у<strong>е</strong> т­<br />

ся п р о в <strong>е</strong> с ти н<strong>е</strong>больш ую п о д го то в и т<strong>е</strong> л ь н у ю р аботу — доб авить стр о ч к у<br />

[ S e r i a l i z a b l e ] в в <strong>е</strong> р х н ю ю часть с<strong>е</strong>риализу<strong>е</strong>м ого класса. П осл <strong>е</strong> это ­<br />

го вс<strong>е</strong> буд<strong>е</strong>т го т о в о к записи.<br />

Объ<strong>е</strong>кт BinaryFormatter<br />

С <strong>е</strong>риализация любого объ<strong>е</strong>кта н а чи н а <strong>е</strong> тся с создания экз<strong>е</strong>м пляра объ<strong>е</strong>кта<br />

B in a r y F o r m a t t e r . Э то о ч <strong>е</strong> н ь п р о с то . Д о с та то ч н о добавить <strong>е</strong>щ<strong>е</strong><br />

о дну с тр о ку u s in g в в <strong>е</strong> р х н ю ю часть класса:<br />

Чт<strong>е</strong>ни<strong>е</strong> и запись<br />

объ<strong>е</strong>ктов в файл<br />

осущ<strong>е</strong>ствляются<br />

быстро. Просто<br />

с<strong>е</strong>риализуйт<strong>е</strong><br />

или дис<strong>е</strong>риализуйт<strong>е</strong><br />

обь<strong>е</strong>кт.<br />

using System.Runtime.Serialization.Formatters.Binary;<br />

• • •<br />

BinaryFormatter formatter = new BinaryFormatter();<br />

Осталось создать поток u приступить к чт<strong>е</strong>нию и записи объ<strong>е</strong>ктов М<strong>е</strong>тоЭ<br />

новы<strong>е</strong> ^ f созда<strong>е</strong>т<br />

М <strong>е</strong>тод S e r i a l i z e () объ<strong>е</strong>кта B in a r y F o r m a t t e r записы ва<strong>е</strong>т объ<strong>е</strong>кты мия откры-<br />

В поток.<br />

ЛЙ<br />

using (Stream output = File.Create(filenameString)) {<br />

formatter.Serialize(output, objectToSerialize);<br />

^ ^ М<strong>е</strong>тод SerializeQ 5epem<br />

' объ<strong>е</strong>кт и записыва<strong>е</strong>т <strong>е</strong>го<br />

Ч т о б ы п р о ч и т а т ь с<strong>е</strong> р и а л и зованны й объ<strong>е</strong>кт, и спользуй т<strong>е</strong> м <strong>е</strong>тод в поток. Вы избавл<strong>е</strong>ны от<br />

D e s e r i a l i z e {) объ<strong>е</strong>кта B in a r y F o r m a t t e r . О н возвращ а<strong>е</strong>т ссылку, т и п н<strong>е</strong>обходимости д<strong>е</strong>лать это<br />

к о т о р о й м о ж <strong>е</strong> т н<strong>е</strong> совпадать с п<strong>е</strong>р<strong>е</strong>м <strong>е</strong> н н о й , п р <strong>е</strong> д н а зн а ч <strong>е</strong> н н о й для к о п и - вручную!<br />

р о вания. В это м случа<strong>е</strong> и сп ользуй т<strong>е</strong> п р ив<strong>е</strong>д<strong>е</strong>ни<strong>е</strong>.<br />

using (Stream input = File.OpenRead(filenameString)) {<br />

SomeObj obj = (SomeObj)formatter.Deserialize(input);<br />

} ^<br />

( Используй м<strong>е</strong>тод PeserializeQ для чт<strong>е</strong>ния обь<strong>е</strong>к-<br />

V _ та из потока, н<strong>е</strong> забывайт<strong>е</strong> осущ<strong>е</strong>ствить прив<strong>е</strong>д<strong>е</strong>ни<strong>е</strong><br />

возвраща<strong>е</strong>мого знач<strong>е</strong>ния к типу чита<strong>е</strong>мого<br />

объ<strong>е</strong>кта.<br />

430 глава 9

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

Saved successfully!

Ooh no, something went wrong!