我正在實現一個需要使用GZIP對日誌消息進行編碼並通過UDP將其發送出去的日誌記錄系統。GZIP和UDP的最快捷方式Java中的大量字符串
到目前爲止,我已經得到了什麼是:
初始化:
DatagramSocket sock = new DatagramSocket();
baos = new ByteArrayOutputStream();
printStream = new PrintStream(new GZIPOutputStream(baos));
然後這爲PrintStream穿出記錄儀 - 消息將通過它
那麼每次消息到達到達:
byte[] d = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(d,d.length,host,port);
sock.send(dp);
目前困擾我的是我無法找到從ByteArrayOutputStream(toByteArray()只需要一個副本)中刪除數據的方式,我擔心每次重新創建所有三個流對象都會效率低下。
有什麼方法可以從流中刪除發送的數據?或者我應該完全朝另一個方向看?
注意:如果字符串很短,如果GZIPed它們會更大。 –