我正在开发一个适应服务器 - 客户端体系结构的项目。在客户端和服务器之间传输的消息是字符串和字节数组的组合。我需要事先发送整个消息的大小。将字符串写入套接字的输出流
查找字节数组的字节大小很简单,但字符串并非如此。很明显,我可以将这些字符串转换为字节数组(考虑编码)。但是,这些字符串可能很长,我不想为它们的副本分配内存(例如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