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.
解决方案
When to use flush method and why do we use it?
It flushes anything which is still buffered by the OutputStream. A detailed description is available in JavaDoc.
What does close method carry a score here?
I'm not sure what you mean by 'carry a score', but the close method finally closes resources (Input or Output), it releases e.g. file handles. You should always call close in a finally block to clean up all references the OS may have.
InputStream is = null;
try {
is = new FileInputStream(...);
// do stuff
} catch (IOException e) {
// do stuff
} finally {
if (is != null) {
is.close();
}
}
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.
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!
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.
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.