Мониторинг ObjectOutputStream в Java - PullRequest
1 голос
/ 26 января 2010

Я использую ObjectOutputStream для отправки большого объекта (возможно, карты) на сервер с помощью моего приложения Swing. В любом случае есть ли возможность отслеживать процент отправленных данных и т. Д., Как при загрузке файла.

Ответы [ 2 ]

1 голос
/ 26 января 2010

Да, есть.

Вы можете создать свою собственную реализацию OutputStream и обернуть ее вокруг ObjectOutputStream . Выходными потоками являются декораторы , поэтому ваша реализация может подсчитать, сколько байтов было отправлено, и с помощью SwingWorker асинхронно обновляет пользовательский интерфейс.

Инициализируйте вашу реализацию OutputStream с размером объекта, который должен быть отправлен, чтобы знать, сколько байтов должно быть отправлено. Посмотрите на ответ Данбена.

1 голос
/ 26 января 2010

Вы можете сериализовать свой объект в байтовый массив, например так (неполно, кредит http://www.exampledepot.com/egs/java.io/SerializeObj.html):

// Serialize to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
out = new ObjectOutputStream(bos);
out.writeObject(object); 
out.close(); 

// Get the bytes of the serialized object
byte[] buf = bos.toByteArray(); 

Затем отправьте байты на сервер, по одному сегменту за раз. Таким образом, вы всегда будете знать, какой процент от общего количества был отправлен. С другой стороны, вам придется реконструировать свой объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...