#Reading and writing to binary files

1 messages · Page 1 of 1 (latest)

native ingot
#
package repository;

import domain.Car;

import java.io.*;
import java.util.ArrayList;

public class CarRepositoryBinaryFile extends FileRepository<Integer, Car> {
    public CarRepositoryBinaryFile(String fileName) {
        super(fileName);
    }

    @Override
    protected void readFromFile() {
        CarRepository newRepo = new CarRepository();
        ObjectInputStream in = null;
        try {
            in = new ObjectInputStream(new FileInputStream(this.fileName));
            while (true) {
                Car car = (Car) in.readObject();
                newRepo.add(car.getId(), car);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        this.repository = newRepo.repository;
    }

    @Override
    protected void writeToFile() {
        ArrayList<Car> cars = new ArrayList<Car>(repository.values());

        ObjectOutputStream out = null;
        try {
            out = new ObjectOutputStream(new FileOutputStream(this.fileName));
            out.writeObject(repository);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

I am getting this error and i am not sure how to fix it

Exception in thread "main" java.lang.ClassCastException: class java.util.HashMap cannot be cast to class domain.Car (java.util.HashMap is in module java.base of loader 'bootstrap'; domain.Car is in unnamed module of loader 'app')
        at repository.CarRepositoryBinaryFile.readFromFile(CarRepositoryBinaryFile.java:21)
        at repository.FileRepository.<init>(FileRepository.java:10)
        at repository.CarRepositoryBinaryFile.<init>(CarRepositoryBinaryFile.java:11)
        at Main.readPropertiesCreateRepo(Main.java:49)
        at Main.main(Main.java:65)
vague gardenBOT
#

Hey, @native ingot!
Please remember to /close this post once your question has been answered!