Когато сериализирате обект в Java, конвертирате данните в байтови потоци, които по -късно конвертират обратно в копие на оригиналните данни. Ако това звучи объркващо, помислете за сериализация в следните термини. Работите върху документ и след това го запазвате на вашия твърд диск. Така или иначе, вие сериализирате данните, за да можете да изтеглите това копие по -късно. Сериализацията прави трансфера на данни в мрежите много по -лесен и по -ефективен.
Важно е да разберете основите на Java, преди да сериализирате обект. Ако сте използвали езици за програмиране като Pascal и по -стари версии на C, ще знаете, че без сериализация на обекти програмистът трябва да създаде отделен I/O текстов файл за съхраняване и зареждане на данни. Сериализацията на обекти в Java заобикаля създаването на този текстов файл за съхраняване на данни, спестявайки време и разходи за програмиране. Следващата статия съдържа стъпките за сериализиране на обект в Java. Примерният код в тази статия се използва с любезното съдействие на Java Developers Almanac 1.4.
Стъпки
Стъпка 1. Отворете Java кодиращия обект, който изисква сериализация, или създайте такъв от нулата
Стъпка 2. Изберете обекта в Java, който искате да сериализирате
В този пример ще наречем този обект „MyObject“.
Стъпка 3. Активирайте сериализацията на обекти в Java, като направите класа MyObject да реализира интерфейса java.io. Serialize
Просто добавете следния код в началото на кода, като замените реда "публичен клас MyObject". Публичен клас MyObject реализира java.io. Serializable
Стъпка 4. Сега вашият обект е сериализуем, това означава, че може да бъде записан от изходен поток, като този:
-
Следните кодови редове илюстрират как да запишете MyObject (или всеки сериализуем обект) на файл или диск.
опитвам{
// Сериализира обект на данни във файл
ObjectOutputStream out = нов ObjectOutputStream (нов FileOutputStream ("MyObject.ser"));
out.writeObject (обект);
out.close ();
// Сериализира обект на данни към байтов масив
ByteArrayOutputStream bos = нов ByteArrayOutputStream ();
out = нов ObjectOutputStream (bos);
out.writeObject (обект);
out.close ();
// Вземете байтовете на сериализирания обект
байт buf = bos.toByteArray ();
} catch (IOException e) {
}
Стъпка 5. Може да се прочете така:
-
опитайте {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream четец = нов ObjectInputStream (врата); MyObject x = нов MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Стъпка 6. Изпълнете сериализирания обектен код в програмата Java, за да се уверите, че работи ефективно (по избор)
Стъпка 7. Запазете и затворете сериализирания обект в Java
Съвети
- Подобренията за сериализация в Java SE Development Kit 6 ви позволяват да използвате ObjectStreamClass потърсете всеки метод за обработка на всякакви несериализуеми обекти на клас.
- За да подобрите времето за четене и писане в големи обектни дървета, използвайте ключовата дума „transient“например променливи, които не изискват сериализация. Това ще увеличи производителността, тъй като вече не четете и не записвате ненужни данни в процеса на сериализация.
Предупреждения
- Java излиза с нова версия на комплекта им за разработчици почти всяка година. Новите версии включват надстройки и промени в начина, по който можете да сериализирате обект в Java. Затова е важно да следите промените във версията, която използвате.
- Когато сериализирате обекти, не можете да шифровате потоци от данни. Следователно ще трябва да разчитате на други приложения или вторични мрежови транспортни процеси, за да защитите данните, ако е необходимо.
- Понастоящем няма опция, която да ви позволява да записвате обекти във файл с произволен достъп. Вместо това можете да използвате входните изходни потоци от масив от байтове като заместител, от който да четете и записвате обектите. Уверете се обаче, че целият обект е в потока Byte Array или процесът ще се провали.