<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FFile_Input_Output%2FObjectInputStream</id>
		<title>Java/File Input Output/ObjectInputStream - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FFile_Input_Output%2FObjectInputStream"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/File_Input_Output/ObjectInputStream&amp;action=history"/>
		<updated>2026-04-21T20:07:15Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/File_Input_Output/ObjectInputStream&amp;diff=6115&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/File_Input_Output/ObjectInputStream&amp;diff=6115&amp;oldid=prev"/>
				<updated>2010-06-01T06:02:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:02, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/File_Input_Output/ObjectInputStream&amp;diff=6114&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/File_Input_Output/ObjectInputStream&amp;diff=6114&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Create ObjectInputStream out of FileInputStream ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
public class CardReader {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Card3 card = null;&lt;br /&gt;
    try {&lt;br /&gt;
      FileInputStream in = new FileInputStream(&amp;quot;card.out&amp;quot;);&lt;br /&gt;
      ObjectInputStream ois = new ObjectInputStream(in);&lt;br /&gt;
      card = (Card3) (ois.readObject());&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.out.println(&amp;quot;Problem serializing: &amp;quot; + e);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;Card read is: &amp;quot; + card);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions are met:&lt;br /&gt;
 *  - Redistributions of source code must retain the above copyright notice,&lt;br /&gt;
 * this list of conditions and the following disclaimer.&lt;br /&gt;
 *  - Redistributions in binary form must reproduce the above copyright notice,&lt;br /&gt;
 * this list of conditions and the following disclaimer in the documentation&lt;br /&gt;
 * and/or other materials provided with the distribution.&lt;br /&gt;
 *  - Neither the name of Sun Microsystems nor the names of its contributors may&lt;br /&gt;
 * be used to endorse or promote products derived from this software without&lt;br /&gt;
 * specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS IS&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE&lt;br /&gt;
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE&lt;br /&gt;
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
class Card3 implements Serializable {&lt;br /&gt;
  private int suit = UNASSIGNED;&lt;br /&gt;
  private int number = UNASSIGNED;&lt;br /&gt;
  public final static int UNASSIGNED = -1;&lt;br /&gt;
  public final static int DIAMONDS = 1;&lt;br /&gt;
  public final static int CLUBS = 2;&lt;br /&gt;
  public final static int HEARTS = 3;&lt;br /&gt;
  public final static int SPADES = 4;&lt;br /&gt;
  public final static int ACE = 1;&lt;br /&gt;
  public final static int KING = 13;&lt;br /&gt;
  public Card3(int number, int suit) {&lt;br /&gt;
    if (isValidNumber(number)) {&lt;br /&gt;
      this.number = number;&lt;br /&gt;
    } else {&lt;br /&gt;
      // Error&lt;br /&gt;
    }&lt;br /&gt;
    if (isValidSuit(suit)) {&lt;br /&gt;
      this.suit = suit;&lt;br /&gt;
    } else {&lt;br /&gt;
      // Error&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int getSuit() {&lt;br /&gt;
    return suit;&lt;br /&gt;
  }&lt;br /&gt;
  public int getNumber() {&lt;br /&gt;
    return number;&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isValidNumber(int number) {&lt;br /&gt;
    if (number &amp;gt;= ACE &amp;amp;&amp;amp; number &amp;lt;= KING) {&lt;br /&gt;
      return true;&lt;br /&gt;
    } else {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static boolean isValidSuit(int suit) {&lt;br /&gt;
    if (suit &amp;gt;= DIAMONDS &amp;amp;&amp;amp; suit &amp;lt;= SPADES) {&lt;br /&gt;
      return true;&lt;br /&gt;
    } else {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public boolean equals(Object obj) {&lt;br /&gt;
    if (obj instanceof Card3) {&lt;br /&gt;
      Card3 card = (Card3) obj;&lt;br /&gt;
      if (card.getNumber() == this.number &amp;amp;&amp;amp; card.getSuit() == this.suit) {&lt;br /&gt;
        return true;&lt;br /&gt;
      } else {&lt;br /&gt;
        return false;&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public int hashCode() {&lt;br /&gt;
    return number * suit;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return numberToString(this.number) + &amp;quot; of &amp;quot; + suitToString(this.suit);&lt;br /&gt;
  }&lt;br /&gt;
  public static String numberToString(int number) {&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    switch (number) {&lt;br /&gt;
    case ACE:&lt;br /&gt;
      result = &amp;quot;Ace&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 2:&lt;br /&gt;
      result = &amp;quot;Two&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 3:&lt;br /&gt;
      result = &amp;quot;Three&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 4:&lt;br /&gt;
      result = &amp;quot;Four&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 5:&lt;br /&gt;
      result = &amp;quot;Five&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 6:&lt;br /&gt;
      result = &amp;quot;Six&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 7:&lt;br /&gt;
      result = &amp;quot;Seven&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 8:&lt;br /&gt;
      result = &amp;quot;Eight&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 9:&lt;br /&gt;
      result = &amp;quot;Nine&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 10:&lt;br /&gt;
      result = &amp;quot;Ten&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 11:&lt;br /&gt;
      result = &amp;quot;Jack&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case 12:&lt;br /&gt;
      result = &amp;quot;Queen&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case KING:&lt;br /&gt;
      result = &amp;quot;King&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case UNASSIGNED:&lt;br /&gt;
      result = &amp;quot;Invalid Number&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
  public static String suitToString(int suit) {&lt;br /&gt;
    String result = &amp;quot;&amp;quot;;&lt;br /&gt;
    switch (suit) {&lt;br /&gt;
    case DIAMONDS:&lt;br /&gt;
      result = &amp;quot;Diamonds&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case CLUBS:&lt;br /&gt;
      result = &amp;quot;Clubs&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case HEARTS:&lt;br /&gt;
      result = &amp;quot;Hearts&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case SPADES:&lt;br /&gt;
      result = &amp;quot;Spades&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case UNASSIGNED:&lt;br /&gt;
      result = &amp;quot;Invalid Suit&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== new ObjectInputStream(new BufferedInputStream(new FileInputStream(StringFileName))); ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.io.BufferedInputStream;&lt;br /&gt;
import java.io.BufferedOutputStream;&lt;br /&gt;
import java.io.EOFException;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.math.BigDecimal;&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
public class ObjectStreams {&lt;br /&gt;
  static final String dataFile = &amp;quot;invoicedata&amp;quot;;&lt;br /&gt;
  static final BigDecimal[] prices = { new BigDecimal(&amp;quot;19.99&amp;quot;),&lt;br /&gt;
      new BigDecimal(&amp;quot;9.99&amp;quot;), new BigDecimal(&amp;quot;15.99&amp;quot;), new BigDecimal(&amp;quot;3.99&amp;quot;),&lt;br /&gt;
      new BigDecimal(&amp;quot;4.99&amp;quot;) };&lt;br /&gt;
  static final int[] units = { 12, 8, 13, 29, 50 };&lt;br /&gt;
  static final String[] descs = { &amp;quot;Java T-shirt&amp;quot;, &amp;quot;Java Mug&amp;quot;,&lt;br /&gt;
      &amp;quot;Duke Juggling Dolls&amp;quot;, &amp;quot;Java Pin&amp;quot;, &amp;quot;Java Key Chain&amp;quot; };&lt;br /&gt;
  public static void main(String[] args) throws IOException,&lt;br /&gt;
      ClassNotFoundException {&lt;br /&gt;
    ObjectOutputStream out = null;&lt;br /&gt;
    try {&lt;br /&gt;
      out = new ObjectOutputStream(new BufferedOutputStream(&lt;br /&gt;
          new FileOutputStream(dataFile)));&lt;br /&gt;
      out.writeObject(Calendar.getInstance());&lt;br /&gt;
      for (int i = 0; i &amp;lt; prices.length; i++) {&lt;br /&gt;
        out.writeObject(prices[i]);&lt;br /&gt;
        out.writeInt(units[i]);&lt;br /&gt;
        out.writeUTF(descs[i]);&lt;br /&gt;
      }&lt;br /&gt;
    } finally {&lt;br /&gt;
      out.close();&lt;br /&gt;
    }&lt;br /&gt;
    ObjectInputStream in = null;&lt;br /&gt;
    try {&lt;br /&gt;
      in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(&lt;br /&gt;
          dataFile)));&lt;br /&gt;
      Calendar date = null;&lt;br /&gt;
      BigDecimal price;&lt;br /&gt;
      int unit;&lt;br /&gt;
      String desc;&lt;br /&gt;
      BigDecimal total = new BigDecimal(0);&lt;br /&gt;
      date = (Calendar) in.readObject();&lt;br /&gt;
      System.out.format(&amp;quot;On %tA, %&amp;lt;tB %&amp;lt;te, %&amp;lt;tY:%n&amp;quot;, date);&lt;br /&gt;
      try {&lt;br /&gt;
        while (true) {&lt;br /&gt;
          price = (BigDecimal) in.readObject();&lt;br /&gt;
          unit = in.readInt();&lt;br /&gt;
          desc = in.readUTF();&lt;br /&gt;
          System.out.format(&amp;quot;You ordered %d units of %s at $%.2f%n&amp;quot;, unit,&lt;br /&gt;
              desc, price);&lt;br /&gt;
          total = total.add(price.multiply(new BigDecimal(unit)));&lt;br /&gt;
        }&lt;br /&gt;
      } catch (EOFException e) {&lt;br /&gt;
      }&lt;br /&gt;
      System.out.format(&amp;quot;For a TOTAL of: $%.2f%n&amp;quot;, total);&lt;br /&gt;
    } finally {&lt;br /&gt;
      in.close();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ObjectInputStream, ObjectOutputStream and java.io.Serializable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
class Engine implements Serializable {&lt;br /&gt;
  private int numCylinders;&lt;br /&gt;
  Engine(int numCylinders) {&lt;br /&gt;
    this.numCylinders = numCylinders;&lt;br /&gt;
  }&lt;br /&gt;
  int getNumCylinders() {&lt;br /&gt;
    return numCylinders;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Car implements Serializable {&lt;br /&gt;
  private int numTires;&lt;br /&gt;
  private Engine e;&lt;br /&gt;
  private String name;&lt;br /&gt;
  Car(String name, int numTires, Engine e) {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
    this.numTires = numTires;&lt;br /&gt;
    this.e = e;&lt;br /&gt;
  }&lt;br /&gt;
  int getNumTires() {&lt;br /&gt;
    return numTires;&lt;br /&gt;
  }&lt;br /&gt;
  Engine getEngine() {&lt;br /&gt;
    return e;&lt;br /&gt;
  }&lt;br /&gt;
  String getName() {&lt;br /&gt;
    return name;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Car c1 = new Car(&amp;quot;Some car&amp;quot;, 4, new Engine(6));&lt;br /&gt;
    ObjectOutputStream oos = null;&lt;br /&gt;
    FileOutputStream fos = new FileOutputStream(&amp;quot;car.ser&amp;quot;);&lt;br /&gt;
    oos = new ObjectOutputStream(fos);&lt;br /&gt;
    oos.writeObject(c1);&lt;br /&gt;
    ObjectInputStream ois = null;&lt;br /&gt;
    FileInputStream fis = new FileInputStream(&amp;quot;car.ser&amp;quot;);&lt;br /&gt;
    ois = new ObjectInputStream(fis);&lt;br /&gt;
    Car c2 = (Car) ois.readObject();&lt;br /&gt;
    System.out.println(&amp;quot;Number of tires = &amp;quot; + c2.getNumTires());&lt;br /&gt;
    System.out.println(&amp;quot;Number of cylinders = &amp;quot; + c2.getEngine().getNumCylinders());&lt;br /&gt;
    System.out.println(&amp;quot;Name = &amp;quot; + c2.getName());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object serialization with Serializable interface, ObjectOutputStream and ObjectInputStream. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
class MyClass implements Serializable {&lt;br /&gt;
  String str;&lt;br /&gt;
  double[] vals;&lt;br /&gt;
  File fn;&lt;br /&gt;
  public MyClass(String s, double[] nums, String fname) {&lt;br /&gt;
    str = s;&lt;br /&gt;
    vals = nums;&lt;br /&gt;
    fn = new File(fname);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    String data = &amp;quot;  str: &amp;quot; + str + &amp;quot;\n  vals: &amp;quot;;&lt;br /&gt;
    for (double d : vals)&lt;br /&gt;
      data += d + &amp;quot; &amp;quot;;&lt;br /&gt;
    data += &amp;quot;\n  fn: &amp;quot; + fn.getName();&lt;br /&gt;
    return data;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    double v[] = { 1.1, 2.2, 3.3 };&lt;br /&gt;
    double v2[] = { 9.0, 8.0, 7.7 };&lt;br /&gt;
    MyClass obj1 = new MyClass(&amp;quot;This is a test&amp;quot;, v, &amp;quot;Test.txt&amp;quot;);&lt;br /&gt;
    MyClass obj2 = new MyClass(&amp;quot;Alpha Beta Gamma&amp;quot;, v2, &amp;quot;Sample.dat&amp;quot;);&lt;br /&gt;
    ObjectOutputStream fout = new ObjectOutputStream(new FileOutputStream(&amp;quot;obj.dat&amp;quot;));&lt;br /&gt;
    System.out.println(&amp;quot;obj1:\n&amp;quot; + obj1);&lt;br /&gt;
    fout.writeObject(obj1);&lt;br /&gt;
    System.out.println(&amp;quot;obj2:\n&amp;quot; + obj2);&lt;br /&gt;
    fout.writeObject(obj2);&lt;br /&gt;
    fout.close();&lt;br /&gt;
    ObjectInputStream fin = new ObjectInputStream(new FileInputStream(&amp;quot;obj.dat&amp;quot;));&lt;br /&gt;
    MyClass inputObj;&lt;br /&gt;
    inputObj = (MyClass) fin.readObject();&lt;br /&gt;
    System.out.println(&amp;quot;First object:\n&amp;quot; + inputObj);&lt;br /&gt;
    inputObj = (MyClass) fin.readObject();&lt;br /&gt;
    System.out.println(&amp;quot;Second object:\n&amp;quot; + inputObj);&lt;br /&gt;
    fin.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Read different data types from ObjectInputStream ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.io.BufferedInputStream;&lt;br /&gt;
import java.io.BufferedOutputStream;&lt;br /&gt;
import java.io.EOFException;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.math.BigDecimal;&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
public class ObjectStreams {&lt;br /&gt;
  static final String dataFile = &amp;quot;invoicedata&amp;quot;;&lt;br /&gt;
  static final BigDecimal[] prices = { new BigDecimal(&amp;quot;19.99&amp;quot;),&lt;br /&gt;
      new BigDecimal(&amp;quot;9.99&amp;quot;), new BigDecimal(&amp;quot;15.99&amp;quot;), new BigDecimal(&amp;quot;3.99&amp;quot;),&lt;br /&gt;
      new BigDecimal(&amp;quot;4.99&amp;quot;) };&lt;br /&gt;
  static final int[] units = { 12, 8, 13, 29, 50 };&lt;br /&gt;
  static final String[] descs = { &amp;quot;Java T-shirt&amp;quot;, &amp;quot;Java Mug&amp;quot;,&lt;br /&gt;
      &amp;quot;Duke Juggling Dolls&amp;quot;, &amp;quot;Java Pin&amp;quot;, &amp;quot;Java Key Chain&amp;quot; };&lt;br /&gt;
  public static void main(String[] args) throws IOException,&lt;br /&gt;
      ClassNotFoundException {&lt;br /&gt;
    ObjectOutputStream out = null;&lt;br /&gt;
    try {&lt;br /&gt;
      out = new ObjectOutputStream(new BufferedOutputStream(&lt;br /&gt;
          new FileOutputStream(dataFile)));&lt;br /&gt;
      out.writeObject(Calendar.getInstance());&lt;br /&gt;
      for (int i = 0; i &amp;lt; prices.length; i++) {&lt;br /&gt;
        out.writeObject(prices[i]);&lt;br /&gt;
        out.writeInt(units[i]);&lt;br /&gt;
        out.writeUTF(descs[i]);&lt;br /&gt;
      }&lt;br /&gt;
    } finally {&lt;br /&gt;
      out.close();&lt;br /&gt;
    }&lt;br /&gt;
    ObjectInputStream in = null;&lt;br /&gt;
    try {&lt;br /&gt;
      in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(&lt;br /&gt;
          dataFile)));&lt;br /&gt;
      Calendar date = null;&lt;br /&gt;
      BigDecimal price;&lt;br /&gt;
      int unit;&lt;br /&gt;
      String desc;&lt;br /&gt;
      BigDecimal total = new BigDecimal(0);&lt;br /&gt;
      date = (Calendar) in.readObject();&lt;br /&gt;
      System.out.format(&amp;quot;On %tA, %&amp;lt;tB %&amp;lt;te, %&amp;lt;tY:%n&amp;quot;, date);&lt;br /&gt;
      try {&lt;br /&gt;
        while (true) {&lt;br /&gt;
          price = (BigDecimal) in.readObject();&lt;br /&gt;
          unit = in.readInt();&lt;br /&gt;
          desc = in.readUTF();&lt;br /&gt;
          System.out.format(&amp;quot;You ordered %d units of %s at $%.2f%n&amp;quot;, unit,&lt;br /&gt;
              desc, price);&lt;br /&gt;
          total = total.add(price.multiply(new BigDecimal(unit)));&lt;br /&gt;
        }&lt;br /&gt;
      } catch (EOFException e) {&lt;br /&gt;
      }&lt;br /&gt;
      System.out.format(&amp;quot;For a TOTAL of: $%.2f%n&amp;quot;, total);&lt;br /&gt;
    } finally {&lt;br /&gt;
      in.close();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reading objects from file using ObjectInputStream ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(&amp;quot;yourFile.dat&amp;quot;));&lt;br /&gt;
    Object obj = null;&lt;br /&gt;
    while ((obj = inputStream.readObject()) != null) {&lt;br /&gt;
      if (obj instanceof Person) {&lt;br /&gt;
        System.out.println(((Person) obj).toString());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    inputStream.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Person implements Serializable {&lt;br /&gt;
  private String firstName;&lt;br /&gt;
  private String lastName;&lt;br /&gt;
  private int age;&lt;br /&gt;
  public Person() {&lt;br /&gt;
  }&lt;br /&gt;
  public String getFirstName() {&lt;br /&gt;
    return firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setFirstName(String firstName) {&lt;br /&gt;
    this.firstName = firstName;&lt;br /&gt;
  }&lt;br /&gt;
  public String getLastName() {&lt;br /&gt;
    return lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLastName(String lastName) {&lt;br /&gt;
    this.lastName = lastName;&lt;br /&gt;
  }&lt;br /&gt;
  public int getAge() {&lt;br /&gt;
    return age;&lt;br /&gt;
  }&lt;br /&gt;
  public void setAge(int age) {&lt;br /&gt;
    this.age = age;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    StringBuffer buffer = new StringBuffer();&lt;br /&gt;
    buffer.append(firstName);&lt;br /&gt;
    buffer.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
    buffer.append(lastName);&lt;br /&gt;
    buffer.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
    buffer.append(age);&lt;br /&gt;
    buffer.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
    return buffer.toString();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Store objects in file ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.ObjectInputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.io.Serializable;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    FileOutputStream fos = new FileOutputStream(&amp;quot;books.dat&amp;quot;);&lt;br /&gt;
    ObjectOutputStream oos = new ObjectOutputStream(fos);&lt;br /&gt;
    Book book = new Book(&amp;quot;1&amp;quot;, &amp;quot;Java&amp;quot;, &amp;quot;A&amp;quot;);&lt;br /&gt;
    oos.writeObject(book);&lt;br /&gt;
    oos.flush();&lt;br /&gt;
    oos.close();&lt;br /&gt;
    FileInputStream fis = new FileInputStream(&amp;quot;books.dat&amp;quot;);&lt;br /&gt;
    ObjectInputStream ois = new ObjectInputStream(fis);&lt;br /&gt;
    book = (Book) ois.readObject();&lt;br /&gt;
    System.out.println(book.toString());&lt;br /&gt;
    ois.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Book implements Serializable {&lt;br /&gt;
  private String isbn;&lt;br /&gt;
  private String title;&lt;br /&gt;
  private String author;&lt;br /&gt;
  public Book(String isbn, String title, String author) {&lt;br /&gt;
    this.isbn = isbn;&lt;br /&gt;
    this.title = title;&lt;br /&gt;
    this.author = author;&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;[Book: &amp;quot; + isbn + &amp;quot;, &amp;quot; + title + &amp;quot;, &amp;quot; + author + &amp;quot;]&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use ObjectOutputStream and ObjectInputStream to write and read Hashtable ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.ObjectOutputStream;&lt;br /&gt;
import java.util.Hashtable;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Hashtable h = new Hashtable();&lt;br /&gt;
    h.put(&amp;quot;string&amp;quot;, &amp;quot;AAA&amp;quot;);&lt;br /&gt;
    h.put(&amp;quot;int&amp;quot;, new Integer(26));&lt;br /&gt;
    h.put(&amp;quot;double&amp;quot;, new Double(Math.PI));&lt;br /&gt;
    FileOutputStream fileOut = new FileOutputStream(&amp;quot;hashtable.ser&amp;quot;);&lt;br /&gt;
    ObjectOutputStream out = new ObjectOutputStream(fileOut);&lt;br /&gt;
    out.writeObject(h);&lt;br /&gt;
      &lt;br /&gt;
    FileInputStream fileIn = new FileInputStream(&amp;quot;h.ser&amp;quot;);&lt;br /&gt;
    ObjectInputStream in = new ObjectInputStream(fileIn);&lt;br /&gt;
    Hashtable h = (Hashtable)in.readObject(  );&lt;br /&gt;
    System.out.println(h.toString(  ));      &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>