import java.io. * ;
public class Ser {
public static void main(String args[]) {
try {
John myObj = new John("Sachin", "Cricket");
System.out.println(myObj);
FileOutputStream fos = new FileOutputStream("FileName");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myObj);
oos.flush();
oos.close();
} catch (Exception e) {
System.out.println("Expection" + e);
System.exit(0);
}
try {
John myObj2;
FileInputStream fis = new FileInputStream("FileName");
ObjectInputStream ois = new ObjectInputStream(fis);
myObj2 = (John) ois.readObject();
ois.close();
System.out.println("New Object" + myObj2);
} catch (Exception e) {
System.out.println("Expection" + e);
System.exit(0);
}
}
}
class John implements Serializable {
private String name;
private String department;
public John(String name, String department) {
this.name = name;
this.department = department;
}
public String toString() {
return "Name" + name + " " + "Department" + department;
}
}
I have a few questions in the above example.
- When to use flush method and why do we use it?
- What does close method carry a score here?
myObj2 = (John) ois.readObject();… please correct me if i am wrong, i am reading the file object and storing into another object and typecasting the file object.- What are the alternatives of Serialization or persisting the data in Java. I don’t want the data to get into file as byte stream.
It flushes anything which is still buffered by the
OutputStream. A detailed description is available in JavaDoc.I’m not sure what you mean by ‘carry a score’, but the
closemethod finally closes resources (Input or Output), it releases e.g. file handles. You should always call close in afinallyblock to clean up all references the OS may have.Somehow correct, you deserialize an Object writen to the file before. Those files are proprietary and can only be understood by Java, so you last question is a good one!
You have a number of options. For client application you may want to use XML, JSON, or a lightweight database like SQLlite. On server-side you may have a look at more robust databases (e.g. MySQL) as well.