2009-12-27 51 views
0

如果我在DataOutput對象上調用writeUTF(String),是否有辦法告訴實際寫入了多少字節?我可以告訴通過DataOutput.writeUTF寫了多少字節嗎?

例如爲:

public int write(DataOutput output) throws IOException { 
    output.writeUTF(this.messageString); 
    int numberOfBytesWritten = ???; 
    return numberOfBytesWritten; 
} 

,想到的唯一方法是創建一個DataOutputStream類,寫入字符串到檢查尺寸,然後重寫字符串的實際輸出。但這似乎效率低下。

回答

1

一個簡單的方法是seperately寫入字符串到DataOutputStream類包裝一個ByteArrayOutputStream,然後關閉(),他DataOutputStream類,並從BAOS後盾字節數組,看看它有多長。

將自己的OutputStream實現封裝在一個單獨的write(int b)方法上,以便在每次調用時簡單地向類的內部計數器中加1就更簡單了。

public class MyOS extends OutputStream 
{ 
    private int count = 0; 
    public void write(int b){ count++; } 
    public int getCount() { return count; } 
} 
... 
相關問題