我有一个数组byte[] arr
;
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] arr = out.toByteArray();
如何测量arr中的数据大小(如果写入磁盘或通过网络传输)?
以下方法是否正确 - 他们认为sizeof(byte) = 1B
int byteCount = out.size();
int byteMsgCount = arr.length;
答案 0 :(得分:11)
是的,根据定义,byte
类型变量的大小是一个字节。所以数组的长度确实是array.length
个字节。
out.size()
将为您提供相同的值,即您在输出流中写入的字节数。
[编辑]来自cricket_007评论:如果您查看size
和toByteArray
的实施情况
public synchronized byte toByteArray()[] {
return Arrays.copyOf(buf, count);
}
public synchronized int size() {
return count;
}
...所以toByteArray
基本上复制当前输出缓冲区,最多为count
个字节。因此使用size
是更好的解决方案。