Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 198
  • Last Modified:

not saving

Hi experts,
I got some help with a question last week were I was trying to save my 2 arrays of classes(doctors and hospitals)

both these classes have string, boolean and integer (and even a class) attributes.

the code used saves the array and a string attribute"name" but it doesnt seem to save the boolean or class attribues

here is part of the code. if you have any solutions or alternatives please include code

    try  {XMLEncoder r = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fileName)));}

    catch (Exception x)    {x.printStackTrace();}

    r.writeObject(allDoctors);
    r.writeObject(allHospitals);
    r.close();
  }

thank you
0
Samooramad
Asked:
Samooramad
  • 10
  • 7
1 Solution
 
objectsCommented:
XMLEncoder is limitied in what it can do, depending on how your class is written.
It is designed to work on beans.

If you just want to serialize your class to be read by another Java application then ObjectOutputStream is perhaps a better approach.
0
 
SamooramadAuthor Commented:
how do I need to change the code?
0
 
objectsCommented:
either change to use ObjectOutputStream:

 try  {ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName)));  
    out.writeObject(allDoctors);
    out.writeObject(allHospitals);
    out.close();
}

    catch (Exception x)    {x.printStackTrace();}

  }


Or modify the classes you are serializing to be JavaBeans suitable for serializing with XMLSerializer
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
SamooramadAuthor Commented:
just change the declaration to JavaBeans instead of class?

also, what do I need to import for your code objects?
0
 
SamooramadAuthor Commented:
if I change to java beans will they still work or will it affect other aspects of the program?
0
 
objectsCommented:
> also, what do I need to import for your code objects?

import java.io.*;

What are you using the serialized instance for?
0
 
SamooramadAuthor Commented:
I dont know what you mean
I got an error by the way.
not serializable object on one of the lines
0
 
objectsCommented:
I meant why do you need to save you object(s) to a file.

> I got an error by the way.
> not serializable object on one of the lines

Sorry forgot to add you'll need to make your class implement Serializable

eg.

public class Doctor implements java.io.Serializable
{
   ...
0
 
SamooramadAuthor Commented:
oh ok :) will try that and see if I get any more trouble :)

thanks
0
 
SamooramadAuthor Commented:
to answer your question I have an array of class Doctor and an array of class Hospital, some calculations are done then some doctors are set as employees of certain hospitals (obviously more than one doctor ends up in each hospital). I just need to save the final result (meaning all hospital names and all the employees in them)

got any pointers?

thanks
0
 
objectsCommented:
Serialization should be fine then.
0
 
SamooramadAuthor Commented:
I dont get errors but it still isnt working..
say I only want to save certain fields in each element of the array ..like in the hospital class, I only want to save the name attribute(string) and the employee attribute(array of String)
how do I go about doing that?
and how do I read them?

thanks for the help
0
 
objectsCommented:
How exactly is it not working?
0
 
SamooramadAuthor Commented:
it saves the "name" attribute but doesnt seem to save the others..
0
 
SamooramadAuthor Commented:
I really only need to save the two attributes "name" and the employee array. is there any way to just save those two?
0
 
objectsCommented:
yes, call the writeObject() method on each object you want to save:

out.writeObject(a);
out.writeObject(b);
out.writeObject(c);
0
 
SamooramadAuthor Commented:
ok will try that

thanks
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 10
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now