Затык в методе save.
Устал бороться с валидатором :'-(
Первый вариант решения считаю вполне корректным, из этого файла properties восстановятся корректно. Или же я не учел каких-то тонкостей?
package com.javarush.task.task20.task2003;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/*
Знакомство с properties
*/
public class Solution {
public static Map<String, String> properties = new HashMap<>();
private Properties propertiesKeeper;
public void fillInPropertiesMap() {
//implement this method - реализуйте этот метод
String filePath = "";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
filePath = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
try (
FileInputStream fileInputStream = new FileInputStream(filePath);
) {
load(fileInputStream);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
System.err.println("load_err");
}
}
public void save(OutputStream outputStream) throws Exception {
//implement this method - реализуйте этот метод
// Решение #1 валидатор не принимает
// try (BufferedWriter saver = new BufferedWriter(new OutputStreamWriter(outputStream))) {
// properties.forEach((x, y) -> {
// try {
// saver.write(x + "=" +y);
// saver.newLine();
// } catch (IOException e) {
// e.printStackTrace();
// }
// });
// saver.flush();
// } catch (IOException e) {
// e.printStackTrace();
// }
// Решение #2 не принимает
// propertiesKeeper.save(outputStream, "");
// Тупое решение #3 ожидаемо не принимает
// try (ObjectOutputStream oos = new ObjectOutputStream(outputStream)) {
// oos.writeObject(properties);
// oos.flush();
// } catch (IOException e) {
// e.printStackTrace();
// }
}
public void load(InputStream inputStream) throws Exception {
//implement this method - реализуйте этот метод
propertiesKeeper = new Properties();
propertiesKeeper.load(inputStream);
propertiesKeeper.forEach((x, y) -> {
properties.put((String) x, (String) y);
});
}
public static void main(String[] args) {
Solution solution = new Solution();
solution.fillInPropertiesMap();
try {
solution.save(new FileOutputStream("c:\\tmp\\out.txt"));
} catch (Exception e) {
e.printStackTrace();
}
properties.forEach((x, y) -> {
System.out.println(x + " " + y);
});
}
}