Если вы хотите прочитать этот файл из вашего приложения, используйте:
InputStream input = getClass().getResourceAsStream("/classpath/to/my/file");
Путь начинается с «/», но это не путь в вашей файловой системе, а в вашем пути к классам , Поэтому, если ваш файл находится в пути к классам «org.xml» и называется myxml.xml, ваш путь выглядит так: «/org/xml/myxml.xml".
InputStream считывает содержимое вашего файла. Вы можете поместить его в Reader, если хотите.
Надеюсь, что это поможет.
Поток имеет ссылочный граф, поэтому объект, который отправляется дважды, не даст двух объектов на другом конце, вы получите только один. И отправка одного и того же объекта дважды по отдельности даст вам один и тот же экземпляр дважды (каждый с теми же данными - это то, что вы видите).
См. Метод reset (), если вы хотите сбросить график .
То, что вы, вероятно, хотите, это:
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
List same = new ArrayList();
same.add(0);
oos.writeObject(same);
oos.flush(); // flush the stream here
same.clear();
same.add(1);
oos.writeObject(same);
В противном случае один и тот же объект будет дважды сброшен, когда поток будет закрыт или его буфер закончится.
Просто FYI, когда вы десериализуйте объекты, скажем, o1
и o2
, o1 != o2
.
flush()
не обладает магическими свойствами, приписываемыми здесь.
– user207421
12 December 2017 в 08:17
Макс правильный, но вы также можете использовать:
public void writeUnshared(Object obj);
См. комментарий ниже для caveat