我已经阅读了太阳指南和不同的类似问题.我想从Socket中读取一些未知数量的字节到数组中.
我有两个选项,我可以read(byte)在循环中使用并将字节添加到字节数组中,或者我可以使用DataInputStream readFully(byte[])将所有字节读入字节数组.哪一个更好,如何预先找到字节数组的大小进行分配?另外,如果我使用第一种方法如何在字节数组中追加字节.
while(in.read(b) ! = -1)
{
//Add to byte array, but how to append at the end?
}
Run Code Online (Sandbox Code Playgroud)
我可以使用StringBuilder接收数据,附加到它然后toString().getBytes()呢?
读入小块并写入 ByteArrayOutputStream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
for(int s; (s=in.read(buffer)) != -1; )
{
baos.write(buffer, 0, s);
}
byte result[] = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)