The validator - system gave me the recommendation:
Überprüfe, warum in den save/load-Methoden eine Ausnahme auftritt.
I don't know which exception the system is meaning. Could you give me a hint please?
package de.codegym.task.task20.task2002;
import java.io.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/*
Lesen und Schreiben in eine Datei: CodeGym
*/
public class Solution {
public static DateFormat df;
public static void main(String[] args) {
df = new SimpleDateFormat("MM d yyyy");
//C:\Users\vince\Desktop\Test2.txt
// Du findest dein_dateiname.tmp in deinem TMP-Verzeichnis oder passe outputStream/inputStream entsprechend dem tatsächlichen Speicherort deiner Datei an
try {
//File yourFile = File.createTempFile("dein_dateiname", null);
File yourFile = new File("C:\\Users\\vince\\Desktop\\Test2.txt");
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
// Initialisiere hier das users-Feld für das codeGym-Objekt
User user1 = new User();
user1.setFirstName("Heinz");
user1.setLastName("Becker");
user1.setMale(true);
user1.setBirthDate(df.parse("11 15 1985"));
user1.setCountry(User.Country.UNITED_KINGDOM);
User user2 = new User();
user2.setFirstName("Maria");
user2.setLastName("Männchen");
user2.setMale(false);
user2.setBirthDate(df.parse("12 15 1995"));
user2.setCountry(User.Country.UNITED_STATES);
CodeGym codeGym = new CodeGym();
codeGym.users.add(user1);
codeGym.users.add(user2);
codeGym.save(outputStream);
outputStream.flush();
CodeGym loadedObject = new CodeGym();
loadedObject.load(inputStream);
// Überprüfe hier, ob das codeGym-Objekt dem geladenen Objekt entspricht
System.out.println(codeGym.equals(loadedObject));
outputStream.close();
inputStream.close();
} catch (IOException e) {
//e.printStackTrace();
System.out.println("Hoppla, mit meiner Datei stimmt etwas nicht");
} catch (Exception e) {
//e.printStackTrace();
System.out.println("Hoppla, mit der Speicher-/Lademethode stimmt etwas nicht");
}
}
public static class CodeGym {
public List<User> users = new ArrayList<>();
public void save(OutputStream outputStream) throws Exception {
// Implementiere diese Methode
PrintWriter pw = new PrintWriter(outputStream);
String isUsersPresent = !users.isEmpty() ? "Ja" : "Nein";
pw.println(isUsersPresent);
pw.flush();
if (isUsersPresent.equals("Ja")){
for (User u : users){
pw.println(u.getFirstName());
pw.println(u.getLastName());
pw.println(u.isMale());
Date date = u.getBirthDate();
String datum = df.format(date);
pw.println(datum);
pw.println(u.getCountry());
}
pw.flush();
}
pw.close();
}
public void load(InputStream inputStream) {
// Implementiere diese Methode
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String usersExist = reader.readLine();
if (usersExist.equals("Ja")){
while (reader.ready()){
User user = new User();
user.setFirstName(reader.readLine());
user.setLastName(reader.readLine());
user.setMale(Boolean.parseBoolean(reader.readLine()));
user.setBirthDate(df.parse(reader.readLine()));
String country = reader.readLine();
switch (country){
case "UNITED_STATES":
user.setCountry(User.Country.UNITED_STATES);
break;
case "UNITED_KINGDOM":
user.setCountry(User.Country.UNITED_KINGDOM);
break;
case "OTHER":
user.setCountry(User.Country.OTHER);
break;
}
users.add(user);
}
}
reader.close();
} catch (IOException | ParseException e) {
e.printStackTrace();
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CodeGym codeGym = (CodeGym) o;
return users != null ? users.equals(codeGym.users) : codeGym.users == null;
}
@Override
public int hashCode() {
return users != null ? users.hashCode() : 0;
}
}
}