Что я хочу достичь: когда я сохраняю объект Integer в файл с помощью метода writeObject()
из класса ObjectOutputstream
, я хочу перезаписать старый объект Integer и заменить его новым. Но я не хочу закрывать и открывать снова поток каждый раз, когда я хочу поместить новый объект Integer. Я просто хочу обновить его новыми значениями.ObjectOutputstream перезаписывает старый объект без закрытия потока
Решение, которое я придумал, не помогло мне. Вот код:
ObjectOutputStream stream1 = new ObjectOutputStream(new FileOutputStream(new File("ClientBase"), false));
stream1.writeObject(new Integer(2));
stream1.flush();
stream1.reset();
stream1.writeObject(new Integer(9));
stream1.close();
Когда я прочитал это, у меня есть два Integer объекты вместо Integer со значением 9 заменен Integer со значением 2.
Если я кладу это так, он работает.
ObjectOutputStream stream1 = new ObjectOutputStream(new FileOutputStream(new File("ClientBase"), false));
stream1.writeObject(new Integer(2));
stream1.close();
stream1 = new ObjectOutputStream(new FileOutputStream(newFile("ClientBase"), false));
stream1.writeObject(new Integer(9));
stream1.close();
Мой вопрос: Могу ли я с помощью метода reset()
в неправильном направлении, и есть ли другой способ достичь перезапись без открытия/закрытия потока?
Это поток, не случайный предмет доступа. Вы пишете в поток два объекта, вы будете читать из него два объекта. Ваш вопрос не имеет смысла. – EJP
Итак, единственный способ снова закрыть и открыть поток? –
Не только поток, но и файл *. NB Вы считаете, что консультируетесь с Javadoc перед публикацией? Ничто там не поддерживает ваше предположение. – EJP