Я пытаюсь создать программу, которая сможет читать все объекты, которые я помещаю в файл.
Ввод работает хорошо, и я помещаю 8 объектов. Но когда я пытаюсь прочитать их из файла, это показывает исключение java.io.StreamCorruptedException. Кажется, он не может отобразить все введенные мной методы.
Я не знаю, где я ошибаюсь.
Есть ли другой способ реализовать функцию, отображающую все объекты в системе.
Спасибо
И я ищу решение
Присоединение к ObjectOutputStream
но я не могу понять ответ, буду очень признателен, если кто-нибудь сможет это объяснить
import java.util.*;
import java.io.*;
public class driver
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
ObjectOutputStream objOut = null;
ObjectInputStream objIn = null;
Pet p = null;
Person owner = null;
do{
System.out.println("what u want to do");
System.out.println("1.add the pet\n2read the pet\n3get the weight\n4 system exit");
int option = keyboard.nextInt();
keyboard.nextLine();
switch(option)
{
case 1:
try
{
objOut = new ObjectOutputStream(new FileOutputStream("pet.dat",true));
owner = new Person();
owner.getInput();
System.out.println("Type of pet?(1-Mammal;2-Fish;3-Amphibian");
int type = keyboard.nextInt();
keyboard.nextLine();
switch (type)
{
case 1:
p = new Mammal();
p.owner = owner;
p.getInput();
objOut.writeObject(p);
objOut.close();
break;
case 2:
p = new Fish();
p.owner = owner;
p.getInput();
objOut.writeObject(p);
objOut.close();
break;
case 3:
p = new Amphibian();
p.owner = owner;
p.getInput();
objOut.writeObject(p);
objOut.close();
break;
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("here");
}
break;
case 2:
try
{
objIn = new ObjectInputStream(new FileInputStream("pet.dat"));
try
{
while(true)
{
p = (Pet)objIn.readObject();
System.out.println(p);
}
}
catch (EOFException e)
{
System.out.println("System ends");
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("something in driver");
}
break;
case 3:
try
{
objIn = new ObjectInputStream(new FileInputStream("pet.dat"));
try
{
while(true)
{
p = (Pet)objIn.readObject();
System.out.println(p.getname() + "'s weight is: " + p.getweight());
}
}
catch (EOFException e)
{
System.out.println("System ends");
}
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("something in driver");
}
break;
case 4:
System.exit(0);
}
}while(true);
}
}
Подробнее здесь: https://stackoverflow.com/questions/231 ... -the-files