2010-01-26 4 views
1

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

+0

Вы используете OutputStreams или Channels для подключения к серверу? –

+0

Я использую выходной поток для подключения к серверу – Azlam

ответ

1

Вы можете сериализовать объект в массив байтов, как этот (неполный, кредит 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(); 

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

+0

Thx danben, получил его! – Azlam

1

Да, есть.

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

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

Смежные вопросы