package com.javarush.test.level20.lesson02.task02; import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /* Читаем и пишем в файл: JavaRush Реализуйте логику записи в файл и чтения из файла для класса JavaRush В файле your_file_name.tmp может быть несколько объектов JavaRush Метод main реализован только для вас и не участвует в тестировании */ 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<User> users = new ArrayList<User>(); public void save(OutputStream outputStream) throws Exception { PrintWriter writer = new PrintWriter(outputStream); writer.println(users.size()); for (User user : users){ writer.println(user.getFirstName()); writer.println(user.getLastName()); writer.println(user.getBirthDate().getTime()); writer.println(user.isMale()); writer.println(user.getCountry().getDisplayedName()); } writer.flush(); //implement this method - реализуйте этот метод } public void load(InputStream inputStream) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); int size = Integer.parseInt(reader.readLine()); if (size > 0){ for (int i = 0; i < size; i++){ User user = new User(); user.setFirstName(reader.readLine()); user.setLastName(reader.readLine()); user.setBirthDate(new Date(Long.parseLong(reader.readLine()))); user.setMale(Boolean.parseBoolean(reader.readLine())); String s = reader.readLine(); if (s.equals("Ukraine")){ user.setCountry(User.Country.UKRAINE); } else if(s.equals("Russia")){ user.setCountry(User.Country.RUSSIA); } else if (s.equals("Other")){ user.setCountry(User.Country.OTHER); } users.add(user); } } //implement this method - реализуйте этот метод } } }
package com.javarush.test.level20.lesson02.task02; 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; } } }
А ВОТ НЕ ПРОШЕДШИЙ, НО ТОЖЕ ИНТЕРЕСНЫЙ КОД:
package com.javarush.test.level20.lesson02.task02; import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; /* Читаем и пишем в файл: JavaRush Реализуйте логику записи в файл и чтения из файла для класса JavaRush В файле your_file_name.tmp может быть несколько объектов JavaRush Метод main реализован только для вас и не участвует в тестировании */ 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("users_for_20-02-02", 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<User> users = new ArrayList<>(); public void save(OutputStream outputStream) throws Exception { PrintWriter writer = new PrintWriter(outputStream); for (User user : users) { if (user.getFirstName() != null) writer.println("yes," + user.getFirstName() + ","); else writer.print("no,null,"); if (user.getLastName() != null) writer.println("yes," + user.getLastName() + ","); else writer.print("no,null,"); if (user.getBirthDate() != null) writer.println("yes," + user.getBirthDate() + ","); else writer.print("no,null,"); writer.print(user.isMale() + ","); if (user.getCountry() != null) writer.println("yes," + user.getCountry() + ","); else writer.print("no,null,"); writer.println(""); } writer.close(); } public void load(InputStream inputStream) throws Exception { DataInputStream stream = new DataInputStream(inputStream); SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); String line; while((line = stream.readLine()) != null) { User user = new User(); String[] data = line.split(","); if (data[0].equals("yes")) user.setFirstName(data[1]); if (data[2].equals("yes")) user.setLastName(data[3]); if (data[4].equals("yes")) user.setBirthDate(dateFormat.parse(data[5])); // if (data[6].equals("true")) user.setMale(true); // if (data[6].equals("false")) user.setMale(false); user.setMale(Boolean.parseBoolean(data[6])); if (data[7].equals("yes")) user.setCountry(User.Country.valueOf(data[8])); users.add(user); } stream.close(); } } }
Leave A Comment