2010-01-26 45 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的實現,以知道需要發送多少個字節。看看丹本的回答。