Chcę zapisywać pewną strykturę, a właściwie tablicę struktur, i wykorzystywać jako plik projektu w moim programie.
Strukturą tą jest DataContainer
class DataContainer implements Serializable{
private PublicationType type;
private HashMap<Enum, String> fields;
private HashMap<Enum, String> oFields;
private HashMap<String, String> userFields;
private String name;
public DataContainer(PublicationType type, HashMap<Enum, String> fields, HashMap<Enum, String> oFields, HashMap<String, String> userFields, String name) {
this.type = type;
this.fields = fields;
this.oFields = oFields;
this.userFields = userFields;
this.name = name;
}
public PublicationType getType() {
return type;
}
public HashMap<Enum, String> getFields() {
return fields;
}
public HashMap<Enum, String> getoFields() {
return oFields;
}
public HashMap<String, String> getUserFields() {
return userFields;
}
public String getName() {
return name;
}
}
chcę zapisywać i odczytywać tablicę tych obiektów i robię to w poniższy sposób:
public static DataContainer[] loadProject(){
//Przygotowanie do wczytania
try {
in = new ObjectInputStream(new FileInputStream(fileToSave));
if (in.readObject() instanceof DataContainer[]) {
DataContainer[] observableList = (DataContainer[]) in.readObject();
return observableList;
} else {
//Obsługa błędnego pliku
}
in.close();
return null;
} catch (FileNotFoundException e) {
//Obsługa nie znalezionego pliku
return null;
} catch (ClassNotFoundException | IOException e) {
//obsługa wyjątków
}
}
public static void saveProject(DataContainer[] pub){
//Przygotowanie do wczytania
try {
out = new ObjectOutputStream(new FileOutputStream(fileToSave+".btd"));
out.writeObject(pub);
out.close();
} catch (IOException | NullPointerException ex) {
}
}
Pozbyłem się części kodu bo to wyświetlenie okienek i tym podobne.
Chodzi o to że o ile sam zapis zdaje się działać to wczytywanie wykoleja się na tej lini kodu:
in = new ObjectInputStream(new FileInputStream(fileToSave));
i przeskakuje na koniec metody bez rzucenia jakiegokolwiek wyjątku. Na debugu doczytałem się że to wyjątek JVM ale nie wiem o co chodzi. Nie potrafię stwierdzić czy problemem jest odczytywanie czy sam zapis i szczerze pierwszy raz spotykam się z czymś takim. Może ktoś powiedzieć o co chodzi ?