Спасяването на обект в текстов файл
Спасяването на обект в текстов файл 231
Най-лесният начин да се докаже, запазването на обекта - за създаване на код, който пише на обекта за формата на текстов файл, тъй като много хора не разполагат с достъп до бази данни, които са предмет или промишлени релационни бази данни от родните си компютри. Въпреки това, независимо от факта, че използването на плоски файлове са много подходящи като добър пример за това, използването на тези файлове в бизнес приложения, разбира се, не е в норма.
В този раздел, ние ще използваме формата на текстов файл, за да илюстрират обект постоянство. Определям на текстов файл като проста операционна система за управление на файлове. Това е много проста концепция, така че не е необходимо да се спра на описанието му.
Много хора не са съгласни напълно с факта, че терминът "плосък файла" успешен. Думата "плосък" означава, че обектът е просто плосък, което е вярно, и там е, в някои отношения. Вие почти може да се разглежда като процес на "изравняване" това, което е необходимо, за да спаси и да се премести всеки обект, независимо от неговата сложност.
Един от проблемите, които може да имате мисли, е, че не може да спаси един обект във файла като обикновен променлива - и това е вярно. В действителност, този проблем за запазване на щатите на обекти зареди голяма част от създаването на промишлеността на софтуерни продукти, които обсъждаме в детайли по-късно в тази глава. Обикновено, когато ви спаси от редица променливи във файл ли, че тяхната цел и вид на всяка променлива (може би с помощта на запетаи сепаратори, и така нататък. П.), Вие в крайна сметка пише във файл. Това може да е файл, където запетаи се използват като разделители или някой друг протокол, може да решите да се приложи.
Проблемът с обекта въз основа на факта, че не е просто набор от примитивни променливи. Един обект може да се мисли като едно цяло се състои от няколко части. По този начин, разлагане трябва да се извърши обект, за да се осигури блокове, които могат да бъдат написани на средата за съхранение, като например формата на текстов файл. След разлагане на обекта и неговите записи в текстов файл ще бъде голям проблем трябва да бъде решен, - възстановяване на обекта, което е в действителност, неговото сглобяване.
Друг голям проблем с опазването на обекти, свързани с факта, че един обект може да съдържа и други обекти. Да приемем, Коли обект включва предмети като Двигатели и Джанти. Когато запазите този обект в текстов файл, трябва да се разбере, че искате да запазите целия обект автомобил. Двигателите и съдържащи т. Р. Своята цялост.
В съвременните езици за програмиране има вградени механизми за обект постоянство. Така например, в Java, както и в други C-базирани езици, често се превръщат в концепцията за поток, когато става дума за I / O. Запазване на обекта във файл за Java може да бъде, да я пиша във файла
232 Глава 12. Постоянни обекти
с поток. За да запишете в обектите на потока трябва да изпълни нито Serializable интерфейс. или Externalizable интерфейс.
Недостатък на този подход е, че приложената решение е патентован - вие трябва да използвате Java, за да го получи. В действителност, на езика Java, за да бъде и двете "Channel" цели. Другият, по-подходящ подход понятието толерантност към желаната задача е да се създаде XML-документ като междинен файл и обект разлагане
последвано от неговото намаляване с използването на отворени XML, свързани с технологии. Ще разгледаме и двата подхода в настоящата глава. Първи език ще се използва
Java Java сериализация да демонстрира технологията, и тогава ние ще прибегне до XML-стратегия за изпълнение на .NET-пример с помощта на C #.
сериализация файл
Като пример, да погледнем на Java-кода по-долу, за да класът Person:
пакет сериализация; внос java.util * .; внос java.io. *;
клас Person изпълнява Serializable
лично име String;
публична личност (String н)
System.out.println ( "Inside конструктор за Лице"); име = N;
String getName () Това е прост клас, който съдържа само един атрибут, който представлява името на съответното лице. В линията, която трябва да се обърне специално внимание, тя дефинира клас Seriali- zable. Ако се вгледате в документацията за Java, ще разберем, че Serializable интерфейса не съдържа големи количества информация - в действителност, тя е предназначена само за да покаже, че обектът е поредица: клас Person изпълнява Serializable Този клас включва също метод getName. която връща името на обекта. В действителност, с изключение на Serializable интерфейс. В този пример, няма нищо ново, което не бяхме виждали преди. Това е мястото, където започва забавно.
Спасяването на обект в текстов файл 233
Сега ние трябва да се създаде приложение, което ще запише обект в текстов файл. Това приложение ще се нарича SavePerson и да изглежда така:
пакет сериализация; внос java.util * .; внос java.io. *;
обществен SavePerson клас изпълнява Serializable
Лице за лице = нов човек ( "Dzhek Dzhons");
FileOutputStream FOS = нов FileOutputStream ( "Name.txt"); ObjectOutputStream ООС = нов ObjectOutputStream (FOS);
System.out.print ( "име Записано човек:");
> Улов (Изключение д) Въпреки факта, че част от този код задълбава в по-сложна Javafunktsionalnost, ние можем изобщо да разбере какво се случва, когато един обект е подложена на сериализация (конверсия) и да бъде записан. Въпреки че не са обмисляли изрично част от кода в тази проба, например кода, свързани с подаване IO, можете да го проучи внимателно, като се използват книгите, посочени в края на тази глава. Досега би трябвало да се разбере, че това е действителното прилагане. Откъде да знаем? Това се доказва от факта, че кодът включва главен метод. В действителност, това приложение прави три неща. 1. Създаване на инстанция на обекта лице. 2. Serializes този обект. 3. Пише този обект Name.txt файл. Действието на сериализация и запис обект се осъществява в следния код: oos.writeObject (човек); Тя е много по-лесно, отколкото писмено всеки атрибут отделно. Много удобно да пиша на обекта директно към файл.
234 Глава 12. Постоянни обекти
За пореден път за изпълнението и интерфейс
Интересно е да се отбележи, че основната изпълнението на преобразуването на файла не е толкова лесно, тъй като тя се използва интерфейс. Не забравяйте, че един от най-важните теми на тази книга - концепцията за разделяне на интерфейс и изпълнение. Осигуряване интуитивен и лесен за използване интерфейс, който се крие основната изпълнение, значително улеснява живота на потребителите.
Сериализирането на файла - един чудесен пример за разликата между интерфейс и изпълнение. програмист интерфейс се използва за да напишете един обект във файл. Не ми пука за всички технически тънкостите на извършването на това "постижение". това е важно за вас да само следното:
можете да запишете файла като едно цяло;
Можете да възстановите даден обект, точно както сте го спаси.
Etotozhesamoe, chtopolzovatsyaavtomobilem.Dlyatogochtobyzavestiavtomobil, вие използвате интерфейс - ключа в стартера, която ви позволява да стартирате двигателя. Повечето хора не знаят, или се грижат за техническите аспекти на това как тя работи всичко - за тях това е само важно, че колата започва.
SavePerson програма пише обект Name.txt файл. кода по-долу възстановява този обект:
пакет сериализация; внос java.io. *; внос java.util * .;
обществени клас RestorePerson
обществен RestorePerson ()
Лице човек = (човек) ois.readObject ();
System.out.print ( "име Реставрирана човек:");
> Улов (Изключение д) Най-красивите е кодът, който извлича обекта от файл Лице човек = (човек) ois.readObject (); Важно е да се отбележи, че обектът е преустроен от текстов файл, това създава и инициализира нов екземпляр на лицето. Този обект Лице