Java- Save object data to a file

31,680

Solution 1

Well I assume, you want to write object directly into the file

public static void serializeDataOut(IHandler ish)throws IOException{
    String fileName= "Test.txt";
    FileOutputStream fos = new FileOutputStream(fileName);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(ish);
    oos.close();
}

public static IHandler serializeDataIn(){
   String fileName= "Test.txt";
   FileInputStream fin = new FileInputStream(fileName);
   ObjectInputStream ois = new ObjectInputStream(fin);
   IHandler iHandler= (IHandler) ois.readObject();
   ois.close();
   return iHandler;
}

I just provided important code. Implement this with exception handling.

Solution 2

An example of how to serialize an object:

public static void writeToFile(File path, Database data)
{
    try(ObjectOutputStream write= new ObjectOutputStream (new FileOutputStream(path)))
    {
        write.writeObject(data);
    }
    catch(NotSerializableException nse)
    {
        //do something
    }
    catch(IOException eio)
    {
        //do something
    }
}


public static Object readFromFile(File path)
{
    Object data = null;

    try(ObjectInputStream inFile = new ObjectInputStream(new FileInputStream(path)))
    {
        data = inFile.readObject();
        return data;
    }
    catch(ClassNotFoundException cnfe)
    {
        //do something
    }
    catch(FileNotFoundException fnfe)
    {
        //do something
    }
    catch(IOException e)
    {
        //do something
    }
    return data;
}   

For more info http://docs.oracle.com/javase/tutorial/jndi/objects/serial.html

Solution 3

You can use the XMLDecoder/XMLEncoder to serialize JavaBean as xml. Here are the examples from oracle's Javadocs on the two classes:

(XMLDecoder)

   XMLDecoder d = new XMLDecoder(
                      new BufferedInputStream(
                          new FileInputStream("Test.xml")));
   Object result = d.readObject();
   d.close();

(XMLEncoder)

   XMLEncoder e = new XMLEncoder(
                      new BufferedOutputStream(
                          new FileOutputStream("Test.xml")));
   e.writeObject(new JButton("Hello, world"));
   e.close();

Note that you would need to add getters and setters and make the class serializable.

Share:
31,680
A_Elric
Author by

A_Elric

Updated on August 12, 2020

Comments

  • A_Elric
    A_Elric almost 4 years

    I've seen so many different posts about what way you're supposed to serialize an object to a file, and all of them conflict in nature on how to do it and what the best practices are. So here's what I'm trying to save:

    public class IHandler{
        public double currentLoad;
        public String currentPrice;
        public String configArgs[];
    };
    

    We can assume that the size of configArgs is known that I need to make a file, here's what I have so far.

    public static void serializeDataOut(IHandler ISH)throws IOException{
        String fileName= "Test.txt";
        FileOutputStream fos = new FileOutputStream(fileName);
            //What do I do here?
        }
    
      public static IHandler serializeDataIn(){
          //What do I do here?
      }