ich kann hier nicht mit sicherheit sagen was input infos sind und sie demnach auch nicht selbst testen. angeblich gibt es hier eine exception beim lesen oder schreiben aber ohne es selbst zu testen kann ich hier nur bei load vermuten. jedoch habe ich mich hier bei format gehalten anderen aufgaben gestellt war. das aus den lösungen ist für mich nicht nachvollziehbar.
package de.codegym.task.task20.task2002;
import java.io.*;
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 void main(String[] args) {
// 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);
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
CodeGym codeGym = new CodeGym();
// Initialisiere hier das users-Feld für das codeGym-Objekt
codeGym.save(outputStream);
outputStream.flush();
CodeGym loadedObject = new CodeGym();
loadedObject.load(inputStream);
// Überprüfe hier, ob das codeGym-Objekt dem geladenen Objekt entspricht
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 writer = new PrintWriter(outputStream);
if (this.users.size() > 0) {
for (User user : this.users) {
writer.println(user.getFirstName());
writer.println(user.getLastName());
writer.println(user.getBirthDate());
writer.println(user.isMale());
writer.println(user.getCountry());
}
}
writer.close();
}
public void load(InputStream inputStream) throws Exception {
// Implementiere diese Methode
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
while (reader.ready()) {
try {
User user = new User();
// String firstName = reader.readLine();
user.setFirstName(reader.readLine());
// String lastName = reader.readLine();
user.setLastName(reader.readLine());
String dateString = reader.readLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dddd");
Date bd = sdf.parse(dateString);
user.setBirthDate(bd);
// boolean isMale = Boolean.parseBoolean(reader.readLine());
User.Country country;
String countryString = reader.readLine();
switch (countryString) {
case "Vereinigte Staaten":
country = User.Country.UNITED_STATES;
break;
case "Vereinigtes Königreich":
country = User.Country.UNITED_KINGDOM;
break;
default:
country = User.Country.OTHER;
break;
}
user.setCountry(country);
this.users.add(user);
} catch (Exception e){
}
}
}
@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;
}
}
}