检查在 save/load 方法中出现的异常。 这是什么意思,哪里异常了?
package zh.codegym.task.task20.task2002;
import java.io.*;
import java.util.*;
/*
读取并写入文件CodeGym
*/
public class Solution {
public static void main(String[] args) {
// 你可以在 TMP 目录中找到 your_file_name.tmp,或者按照文件的实际位置调整 outputStream/inputStream
try {
File yourFile = File.createTempFile("你的文件名", null);
OutputStream outputStream = new FileOutputStream(yourFile);
InputStream inputStream = new FileInputStream(yourFile);
CodeGym codeGym = new CodeGym();
// 在此初始化 codeGym 对象的 users 字段
codeGym.save(outputStream);
outputStream.flush();
CodeGym loadedObject = new CodeGym();
loadedObject.load(inputStream);
// 在此检查 codeGym 对象是否等于 loadedObject 对象
outputStream.close();
inputStream.close();
} catch (IOException e) {
//e.printStackTrace();
System.out.println("糟糕,我的生活出现问题了");
} catch (Exception e) {
//e.printStackTrace();
System.out.println("糟糕,save/load 方法出现问题");
}
}
public static class CodeGym {
public List<User> users = new ArrayList<>();
public void save(OutputStream outputStream) throws Exception {
// 实现此方法
PrintWriter writer=new PrintWriter(outputStream);
String usersIsnull=users!=null?"否":"是";
writer.println(usersIsnull);
if(!users.isEmpty()){
for (User user:users){
String birthDate = user.getBirthDate().toString();
writer.print(birthDate);
String country = user.getCountry().toString();
writer.print(country);
writer.print(user.getFirstName());
writer.print(user.getLastName());
String sex = user.isMale() ? "true" : "false";
writer.print(sex);
}
}
writer.flush();
writer.close();
}
public void load(InputStream inputStream) throws Exception {
// 实现此方法
Scanner scanner=new Scanner(inputStream);
String usersIsnull=scanner.nextLine();
if(usersIsnull.equals("否")){
while (scanner.hasNext()){
User user=new User();
user.setBirthDate(new Date(scanner.nextLine()));
String country=scanner.nextLine();
if(country.equals("美国")){
user.setCountry(User.Country.UNITED_STATES);
}
else if(country.equals("英国")){
user.setCountry((User.Country.UNITED_KINGDOM));
}
else user.setCountry(User.Country.OTHER);
user.setFirstName(scanner.nextLine());
user.setLastName(scanner.nextLine());
String sex=scanner.nextLine();
user.setMale(sex.equals("true"));
users.add(user);
}
}
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CodeGym codeGym = (CodeGym) o;
return Objects.equals(users, codeGym.users);
}
@Override
public int hashCode() {
return users != null ? users.hashCode() :0;
}
}
}