将 byte[] 缓冲区重置为零?

Resetting byte[] buffer to zeros?

在下面的套接字代码中,我声明了一个字节缓冲区并循环侦听客户端消息:

// Create some buffer
byte[] buffer = new byte[512];

while (true)
{
    // Listen for messages from Client

    int length = socket.getInputStream().read(buffer);

    if (length != -1)
        System.out.println(new String(buffer));
    else
        break;

    // Reset buffer here to zeros?
}

每次我都需要重置缓冲区的内容以接收新消息。执行此操作的正确方法是什么?

您不需要重置缓冲区,您需要一个 String 构造函数,该构造函数不会超过接收到字节的缓冲区部分的末尾:

if (length != -1) {
    System.out.println(new String(buffer, 0, length));
}

现在,即使缓冲区变脏,您的代码也能正常工作。

注意: 为了更好的可移植性,将所需的 Charset 传递给 String 构造函数。否则,您构造的 String 可能与通过套接字传输给您的字符串不匹配。

同意, but to answer the question itself (how to reset an array), you can use Arrays.fill为每个单元格设置一个值

byte[] array = new byte[10];
Arrays.fill(array, (byte)0);