[英]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
可能與通過套接字傳輸給您的字符串不匹配。
同意dasblinkenlight答案 ,但要回答問題本身(如何重置數組),您可以使用Arrays.fill
為每個單元格設置一個值
byte[] array = new byte[10];
Arrays.fill(array, (byte)0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.