以下是我的应用程序需要工作的步骤。
我开始申请后:
它需要继续接受来自用户的字符串形式的输入。
收到任何输入后,我需要将其序列化。
之后,我需要反序列化文件中存储的所有对象,这样我就不会丢失存储在文件中的先前序列化对象。
如何实施?每次我能够反序列化最后出现的一个对象。下面是我用于单输入的代码。我无法将所有输入转换为单个对象,因为我的应用程序需要继续运行一整天,并且必须随时接受输入。
序列化代码
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();
}
}