在Java中序列化和反序列化多个对象

时间:2014-12-11 07:17:27

标签: java serialization

以下是我的应用程序需要工作的步骤。

我开始申请后:

  1. 它需要继续接受来自用户的字符串形式的输入。

  2. 收到任何输入后,我需要将其序列化。

  3. 之后,我需要反序列化文件中存储的所有对象,这样我就不会丢失存储在文件中的先前序列化对象。

  4. 如何实施?每次我能够反序列化最后出现的一个对象。下面是我用于单输入的代码。我无法将所有输入转换为单个对象,因为我的应用程序需要继续运行一整天,并且必须随时接受输入。

    序列化代码

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    import java.util.Scanner;
    
    public class Dummyserial implements Serializable {
    
        /**
         * @param args
         */
        String input;   
        public void work()
    
        {       System.out.println("give an input");
                Scanner user_input = new Scanner( System.in );
                input=user_input.next( );
    
        }
        public static char sa='n';
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("pree Y to continue or N to exit");
            Scanner flag= new Scanner(System.in);
            sa=flag.next().charAt(0);
    
    if (sa=='y'){
            Dummyserial obj=new Dummyserial();
            try{
                         FileOutputStream fileOut =new FileOutputStream("C:/Workouts/DummyStrng.ser");
                         ObjectOutputStream out = new ObjectOutputStream(fileOut);
                         obj.work();
                         out.writeObject(obj);
                         out.close();
                         fileOut.close();
                         System.out.printf("Serialized data is saved in C:/Workouts/Strng.ser");
                }
                catch(IOException i)
                  {
                      i.printStackTrace();
                  }
            }}
        }
    

    反序列化代码

    import java.io.FileInputStream;
    import java.io.ObjectInputStream;
    
    import java.io.IOException;
    
    public class DummyDeserial {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Dummyserial obj=null;
             try
              {
                 FileInputStream fileIn = new FileInputStream("C:/Workouts/DummyStrng.ser");
                 ObjectInputStream in = new ObjectInputStream(fileIn);
                 obj = (Dummyserial) in.readObject();
                 in.close();
                 fileIn.close();
              }catch(IOException i)
              {
                 i.printStackTrace();
                 return;
              }catch(ClassNotFoundException c)
              {
                 System.out.println("Employee class not found");
                 c.printStackTrace();
                 return;
              }
    
    
            System.out.printf("%s",obj.input);
            System.out.println();
    
            }
    
        }
    

0 个答案:

没有答案