Apartment apartment = new Apartment("Mavzoley", 2021);
String file;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
file = reader.readLine();
}
try (ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file))) {
apartment.writeExternal(outputStream);
Apartment loaded = new Apartment();
loaded.readExternal(inputStream);
System.out.println(apartment);
System.out.println(loaded);
/*результат
null
Address: Mavzoley
Year: 2021
Address: Mavzoley
Year: 0
*/
}
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
apartment.writeExternal(outputStream);
outputStream.close();
Apartment loaded = new Apartment();
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
loaded.readExternal(inputStream);
inputStream.close();
System.out.println(apartment);
System.out.println(loaded);
/*результат
Address: Mavzoley
Year: 2021
Address: Mavzoley
Year: 2021
*/
Никита
25 уровень
Подскажите, пожалуйста, почему отличается вывод при использовании try-with-resources ?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
9 июня 2021, 12:36полезный
судя по javadoc
потому что ты одновременно открываешь ObjectOutputStream и ObjectInputStream одного и этого же файла, то второй блокируется первым)
public ObjectInputStream(InputStream in)
throws IOException
Creates an ObjectInputStream that reads from the specified InputStream. A serialization stream header is read from the stream and verified. This constructor will block until the corresponding ObjectOutputStream has written and flushed the header.
если тебе нужно чтение и запись одного и того же файла, то одновременно потоки открывать не надо.
либо если хочешь открыть одновременно потоки, то используй TempFile , а потом уже переноси его вместо оригинального (с перезаписью).
+3
Никита
10 июня 2021, 06:58
я даже не подозревал об этом)
спасибо, очень полезная инфа:)
0
Дмитрий Б.
18 августа 2021, 05:31
Спасибо тебе добрый человек. Вот как я сам не мог догадаться до этого, это же элементарно.
0