2010-01-26 46 views
1

我正在使用ObjectOutputStream向我的Swing应用程序发送一个大对象(可能是一个Map)到服务器,有无论如何监视发送的百分比,如文件上传。监控Java中的ObjectOutputStream

+0

您是使用OutputStreams还是Channels来连接服务器? – 2010-01-26 17:39:48

+0

我正在使用outputstream连接到服务器 – Azlam 2010-01-26 17:58:02

回答

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 2010-01-26 18:04:09

1

是的。

您可以创建自己的实现OutputStream并将其包装在您的ObjectOutputStream周围。输出流为decorators,因此您的实现可以计算已发送多少个字节,并使用SwingWorker异步更新UI。

使用必须发送的对象的大小初始化OutputStream的实现,以知道需要发送多少个字节。看看丹本的回答。