2016-02-26 67 views
2

嗨,所以我幾天以前就開始使用了Netty,但我注意到,這樣我的ByteBuf轉換爲字符串每次使用時其的Java Netty的5 ByteBuf爲String正道

是否有正在使用的內存很多的任何其他方式使用大量內存來做到這一點?

順便說一下,如果字符串包含CheckPacket函數是一個簡單的方法。

Thx。

ByteBuf byteBuffer=(ByteBuf)msg; 
    byte[] result = new byte[byteBuffer.readableBytes()]; 
    byteBuffer.readBytes(result).retain(); 
    String resultStr = new String(result); 
    if (!resultStr.isEmpty()) { 
     System.out.println(resultStr); 
     CheckPacket(resultStr, client); 
    } 
    byteBuffer.release(); 
    byteBuffer.clear(); 

回答

0

這個例子可以幫助你:

 byte[] inputBytes; 
     int offset = 0; 
     int length = input.readableBytes(); 
     if (input.hasArray()) { 
      inputBytes = input.array(); 
      offset = input.arrayOffset() + input.readerIndex(); 
     } else { 
      inputBytes = new byte[length]; 
      input.getBytes(input.readerIndex(), inputBytes); 
     } 

完整的源here

相關問題