Почему программа работает только тогда, когда в методе save() пишу в файл OutputStream-ом. При обертовании в PrintWriter -- ни чего не пишется? public class Solution { public static void main(String[] args) { //you can find your_file_name.tmp in your TMP directory or adjust outputStream/inputStream according to your file's actual location //вы можете найти your_file_name.tmp в папке TMP или исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу try { File yourFile = File.createTempFile("E:/test/file1.txt", null); // OutputStream outputStream = new FileOutputStream(yourFile); // InputStream inputStream = new FileInputStream(yourFile); OutputStream outputStream = new FileOutputStream("E:/test/file1.txt"); InputStream inputStream = new FileInputStream("E:/test/file1.txt"); OutputStream outputStream2 = new FileOutputStream("E:/test/file2.txt"); JavaRush javaRush = new JavaRush(); User user1 = new User(); user1.setFirstName("Саня"); user1.setLastName("Пушкин"); user1.setMale(true); user1.setCountry(User.Country.RUSSIA); user1.setBirthDate(new SimpleDateFormat("dd.MM.yyyy").parse("06.06.1799")); javaRush.users.add(user1); User user2 = new User(); user2.setFirstName("Кася"); user2.setLastName("Камоцкая"); user2.setMale(false); user2.setCountry(User.Country.OTHER); user2.setBirthDate(new SimpleDateFormat("dd.MM.yyyy").parse("22.06.1964")); javaRush.users.add(user2); //initialize users field for the javaRush object here - инициализируйте поле users для объекта javaRush тут javaRush.save(outputStream); outputStream.flush(); JavaRush loadedObject = new JavaRush(); loadedObject.load(inputStream); System.out.println(loadedObject.equals(javaRush)); loadedObject.save(outputStream2); //here check that the javaRush object is equal to the loadedObject object - проверьте тут, что javaRush и loadedObject равны outputStream.close(); inputStream.close(); } catch (IOException e) { //e.printStackTrace(); System.out.println("Oops, something is wrong with my file"); } catch (Exception e) { e.printStackTrace(); System.out.println("Oops, something is wrong with the save/load method"); } } public static class JavaRush { public List<User> users = new ArrayList<>(); public void save(OutputStream outputStream) throws Exception { PrintWriter printWriter = new PrintWriter(outputStream); if (this.users.size() > 0) { for (User item : this.users) { printWriter.write(item.getFirstName()); //outputStream.write(item.getFirstName().getBytes()); //outputStream.write(10); printWriter.println(item.getLastName()); //outputStream.write(item.getLastName().getBytes()); //outputStream.write(10); printWriter.println(item.isMale()); // outputStream.write(String.valueOf(item.isMale()).getBytes()); // outputStream.write(10); printWriter.println(item.getCountry()); //outputStream.write(item.getCountry().name().getBytes()); //outputStream.write(10); printWriter.println(item.getBirthDate().getTime()); // outputStream.write(String.valueOf(item.getBirthDate().getTime()).getBytes()); // outputStream.write(10); } } //implement this method - реализуйте этот метод } public void load(InputStream inputStream) throws Exception { BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream)); while (fileReader.ready()){ User user = new User(); user.setFirstName(fileReader.readLine()); user.setLastName(fileReader.readLine()); user.setMale(searchMale(fileReader.readLine())); user.setCountry(searchCountry(fileReader.readLine())); user.setBirthDate(new Date(Long.valueOf(fileReader.readLine()))); users.add(user); } fileReader.close(); //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; } } public static boolean searchMale(String line){ if (line.equals("true")) { return true; } return false; } public static User.Country searchCountry(String strCountry){ if (strCountry.equals("UKRAINE")){ return User.Country.UKRAINE;} if (strCountry.equals("RUSSIA")){ return User.Country.RUSSIA;} if (strCountry.equals("OTHER")){ return User.Country.OTHER;} return null; }