Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6-7_MU_OOP_Menyu_moya.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
93 Кб
Скачать
☆

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 {