我正在開發一個適應服務器 - 客戶端體系結構的項目。在客戶端和服務器之間傳輸的消息是字符串和字節數組的組合。我需要事先發送整個消息的大小。將字符串寫入套接字的輸出流
查找字節數組的字節大小很簡單,但字符串並非如此。很明顯,我可以將這些字符串轉換爲字節數組(考慮編碼)。但是,這些字符串可能很長,我不想爲它們的副本分配內存(例如getBytes()分配一個新數組)。
我的問題是,進行以下操作的內存效率最高的方法是什麼?字符串的
- 查找字節大小(使用UTF-8編碼)
- 編寫大小到輸出流
- 寫入字符串輸出流
嘗試DataOutputStream。看看javadoc – andy 2013-05-01 14:56:47
@andy我會知道我將要寫入的字符串的大小嗎? – mostruash 2013-05-01 15:00:35
「多久」多久了,您是否真的證明了複製所需的空間/時間是過分的?使用CharsetEncoder來完成此操作可能是可行的(字節計數部分相當簡單),但我認爲在做更復雜的事情之前,儘量證明最簡單的方法是不夠的。 – 2013-05-01 15:03:42