Import java.Io.*;
public class Item implements Comparable<Item>, java.io.Serializable
Аналогично самостоятельно реализуйте интерфейс java.io.Serializable в классах Book, MusicCD, MusicDVD.
Затем необходимо создать в классе-родителе Item.class создать два метода для сохранения ( метод save() )и извлечения (метод load() ) объектов из внешнего файла.
public void save(DataOutputStream out) throws IOException {
}
public Item load(DataInputStream in) throws IOException {
return null;
}
Эти методы пока будут только обрабатывать исключения в случае ошибки, а саму реализацию пропишем в классе реализующего коллекции Compar.class. Аналогично самостоятельно реализуйте интерфейс java.io.Serializable в этом классе.
Далее создадим два метода для сохранения и загрузки коллекции в текстовый файл:
public void save(DataOutputStream out) throws IOException {
out.writeInt(this.item.size());
Iterator<Item> iter = this.item.iterator();
while (iter.hasNext()) {
Iter.Next().Save(out); // сохранить объект в текстовый файл
}
}
public Compar load(DataInputStream in) throws IOException {
int size = in.readInt();
for (int i = 0; i < size; i++) {
String x = in.readUTF();
If (X.Equals("Book")){
Booknew book = new Booknew();
this.item.add(book.load(in)); // добавить объект в коллекцию
}
}
return this;
}
Далее откройте класс, который будет все запускать TestItem.class. Аналогично самостоятельно реализуйте интерфейс java.io.Serializable в этом классе.
Cоздадим в нем два метода Saving и Loading:
public static void Saving(Compar compar){
DataOutputStream out = null;
ObjectOutputStream out1 = null;
try {
out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File("test.txt"))));
out1 = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File("test1.txt"))));
try {
compar.save(out);
out1.writeObject(compar.getItem());
} catch (IOException e) {
System.out.println("Maybe disk is full, or you haven't permissions to write");
}
try {
out.close();
out1.close();
} catch (IOException e) {
System.out.println("Ошибка");
}
} catch (FileNotFoundException e) {
System.out.println("Отсутсвует файл.");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static Compar Loading(Compar compar){
DataInputStream in = null;
ObjectInputStream in1 = null;
try {
in = new DataInputStream(new BufferedInputStream(new FileInputStream(new File("test.txt"))));
in1 = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("test1.txt"))));
try {
compar.setItem((ArrayList<Item>)in1.readObject());
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
System.out.println("Maybe disk is full, or you haven't permissions to write");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
