//Jesus answered him, "Do you say this by yourself, or did others tell you about me?" (John 18:34) ----------------------------------------------------Solution.java------------------------------------------------------------- package com.javarush.task.task20.task2002; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; public class Solution { public static void main(String[] args) { try { File your_file_name = new File("d:\\5.txt"); OutputStream outputStream = new FileOutputStream(your_file_name); InputStream inputStream = new FileInputStream(your_file_name); JavaRush javaRush = new JavaRush(); User usr = new User(); usr.setFirstName("Ivan"); usr.setLastName("Ivanov"); usr.setBirthDate(new GregorianCalendar(1980, 11, 25).getTime()); usr.setCountry(User.Country.RUSSIA); usr.setMale(true); javaRush.users.add(usr); javaRush.save(outputStream); outputStream.flush(); JavaRush loadedObject = new JavaRush(); loadedObject.load(inputStream); outputStream.close(); inputStream.close(); } catch (IOException e) { System.out.println("Oops, something wrong with my file"); } catch (Exception e) { System.out.println("Oops, something wrong with save/load method"); } } public static class JavaRush { public List users = new ArrayList<>(); public void save(OutputStream outputStream) throws Exception { DataOutputStream outToFile = new DataOutputStream(outputStream); outToFile.writeInt(users.size()); for (User user : users) { String firstName = (user.getFirstName() == null) ? "null" : user.getFirstName(); outToFile.writeUTF(firstName); String lastName = (user.getLastName() == null) ? "null" : user.getLastName(); outToFile.writeUTF(lastName); outToFile.writeLong(user.getBirthDate().getTime()); outToFile.writeBoolean(user.isMale()); outToFile.writeUTF(user.getCountry().name()); } outToFile.flush(); } public void load(InputStream inputStream) throws Exception { DataInputStream fromFile = new DataInputStream(inputStream); int usersCount = fromFile.readInt(); for (int i = 0; i < usersCount; i++) { User user = new User(); String firstName = fromFile.readUTF(); if (firstName.equals("null")) firstName = null; user.setFirstName(firstName); String lastName = fromFile.readUTF(); if (lastName.equals("null")) lastName = null; user.setLastName(lastName); user.setBirthDate(new Date(fromFile.readLong())); user.setMale(fromFile.readBoolean()); user.setCountry(User.Country.valueOf(fromFile.readUTF())); users.add(user); } } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; JavaRush javaRush = (JavaRush) o; return users != null ? users.equals(javaRush.users) : javaRush.users == null; } @Override public int hashCode() { return users != null ? users.hashCode() : 0; } } } ------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------User.java--------------------------------------------------------------- package com.javarush.task.task20.task2002; import java.util.Date; public class User { private String firstName; private String lastName; private Date birthDate; private boolean isMale; private Country country; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public boolean isMale() { return isMale; } public void setMale(boolean male) { isMale = male; } public Country getCountry() { return country; } public void setCountry(Country country) { this.country = country; } public static enum Country { UKRAINE("Ukraine"), RUSSIA("Russia"), OTHER("Other"); private String name; private Country(String name) { this.name = name; } public String getDisplayedName() { return this.name; } } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (isMale != user.isMale) return false; if (firstName != null ? !firstName.equals(user.firstName) : user.firstName != null) return false; if (lastName != null ? !lastName.equals(user.lastName) : user.lastName != null) return false; if (birthDate != null ? !birthDate.equals(user.birthDate) : user.birthDate != null) return false; return country == user.country; } @Override public int hashCode() { int result = firstName != null ? firstName.hashCode() : 0; result = 31 * result + (lastName != null ? lastName.hashCode() : 0); result = 31 * result + (birthDate != null ? birthDate.hashCode() : 0); result = 31 * result + (isMale ? 1 : 0); result = 31 * result + (country != null ? country.hashCode() : 0); return result; } } ------------------------------------------------------------------------------------------------------------------------------ /* Читаем и пишем в файл: JavaRush Реализуйте логику записи в файл и чтения из файла для класса JavaRush. В файле your_file_name.tmp может быть несколько объектов JavaRush. Метод main реализован только для вас и не участвует в тестировании. Требования: 1. Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если список users пустой. 2. Логика чтения/записи реализованная в методах save/load должна работать корректно в случае, если список users не пустой. 3. Класс Solution.JavaRush не должен поддерживать интерфейс Serializable. 4. Класс Solution.JavaRush должен быть публичным. 5. Класс Solution.JavaRush не должен поддерживать интерфейс Externalizable. ----------------------------------------------------Solution.java------------------------------------------------------------- package com.javarush.task.task20.task2002; import java.io.*; import java.util.ArrayList; import java.util.List; * Читаем и пишем в файл: JavaRush * public class Solution { public static void main(String[] args) { //you can find your_file_name.tmp in your TMP directory or fix outputStream/inputStream according to your real file location //вы можете найти your_file_name.tmp в папке TMP или исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу try { File your_file_name = File.createTempFile("your_file_name", null); OutputStream outputStream = new FileOutputStream(your_file_name); InputStream inputStream = new FileInputStream(your_file_name); JavaRush javaRush = new JavaRush(); //initialize users field for the javaRush object here - инициализируйте поле users для объекта javaRush тут javaRush.save(outputStream); outputStream.flush(); JavaRush loadedObject = new JavaRush(); loadedObject.load(inputStream); //check here that javaRush object equals to loadedObject object - проверьте тут, что javaRush и loadedObject равны outputStream.close(); inputStream.close(); } catch (IOException e) { //e.printStackTrace(); System.out.println("Oops, something wrong with my file"); } catch (Exception e) { //e.printStackTrace(); System.out.println("Oops, something wrong with save/load method"); } } public static class JavaRush { public List users = new ArrayList<>(); public void save(OutputStream outputStream) throws Exception { //implement this method - реализуйте этот метод } public void load(InputStream inputStream) throws Exception { //implement this method - реализуйте этот метод } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; JavaRush javaRush = (JavaRush) o; return users != null ? users.equals(javaRush.users) : javaRush.users == null; } @Override public int hashCode() { return users != null ? users.hashCode() : 0; } } } ------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------User.java--------------------------------------------------------------- package com.javarush.task.task20.task2002; import java.util.Date; public class User { private String firstName; private String lastName; private Date birthDate; private boolean isMale; private Country country; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public boolean isMale() { return isMale; } public void setMale(boolean male) { isMale = male; } public Country getCountry() { return country; } public void setCountry(Country country) { this.country = country; } public static enum Country { UKRAINE("Ukraine"), RUSSIA("Russia"), OTHER("Other"); private String name; private Country(String name) { this.name = name; } public String getDisplayedName() { return this.name; } } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (isMale != user.isMale) return false; if (firstName != null ? !firstName.equals(user.firstName) : user.firstName != null) return false; if (lastName != null ? !lastName.equals(user.lastName) : user.lastName != null) return false; if (birthDate != null ? !birthDate.equals(user.birthDate) : user.birthDate != null) return false; return country == user.country; } @Override public int hashCode() { int result = firstName != null ? firstName.hashCode() : 0; result = 31 * result + (lastName != null ? lastName.hashCode() : 0); result = 31 * result + (birthDate != null ? birthDate.hashCode() : 0); result = 31 * result + (isMale ? 1 : 0); result = 31 * result + (country != null ? country.hashCode() : 0); return result; } } ------------------------------------------------------------------------------------------------------------------------------ */