помощь в решении проблемы с Java I / O - PullRequest
0 голосов
/ 15 ноября 2010

Я создал класс с именем Animal с инструментами Serializable. Каждый объект класса Animal имеет имя и тип. В методе Main моей программы я создам объект типа Animal и назначу ему имя и тип. затем я хочу записать объект в файл и после этого прочитать его в объект Animal. для этой цели я создал следующие методы:

    Animal anim=new Animal();
    Animal Anim2 = new Animal();
    //writing into the file
    private void writeOnFile() {
  try{

   FileOutputStream fout = new FileOutputStream("c:\\animal.ser");
   ObjectOutputStream oos = new ObjectOutputStream(fout);   
   oos.writeObject(anim);
   oos.close();
   System.out.println("Done");

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

 }
    // reading the file
    private Animal readFromFile() {
   try{
      FileInputStream fin = new FileInputStream("c:\\animal.ser");
      ObjectInputStream ois = new ObjectInputStream(fin);
      anim = (Animal) ois.readObject();
      ois.close();

      return anim;

     }catch(Exception ex){
      ex.printStackTrace();
      return null;
     }

 }

но теперь я хочу создать связанный список и добавить несколько объектов Animal в этот связанный список. Как я могу изменить свои методы writeOnFile () и readFromFile () для выполнения записи? не могли бы вы вести меня?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Хороший ответ Карианны, используя foreach. Но эта домашняя работа, очевидно, фокусируется на особенностях интерфейса Serializable, поэтому давайте использовать его.

Поскольку ваш класс Animal реализует Serializable, а также класс LinkedList, вы можете просто передать свой LinkedList в ObjectOutputStream и загрузить его аналогичным образом.

LinkedList<Animal> list = new LinkedList<Animal>();
(... add some elements ...)
ObjectOutputStream oos = new ObjectOutputStream(fout);   
oos.writeObject(list);

Загрузка будет вашей частью, так как вы хотите узнать что-то из этого упражнения, не так ли;)

1 голос
/ 15 ноября 2010

Карианна дала хороший ответ.Я просто хочу добавить, что сам связанный список реализует сериализуемый, так что вы можете просто записать его в файл и прочитать его обратно.Только не забудьте обернуть ваши выходные и входные потоки ObjectOutputStream и ObjectInputStream.

Вот и все.Теперь реализуй свою домашнюю работу и узнай что-то новое!

0 голосов
/ 15 ноября 2010

Подсказка: вам нужно использовать конструкцию цикла, такую ​​как цикл for или while, который будет циклически повторять ваш Список животных.Например,

Вам нужно будет где-нибудь объявить свой список животных.Что-то вроде:

List<Animal> animals = new ArrayList<Animal>();

И обведите их, что-то вроде:

for (Animal animal:animals)
{
  // Do appropriate thing
}

Остальное я оставлю вам для заполнения, я подозреваю, что вы получите большеупражнение таким образом: -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...