如何從只讀ByteBuffer中提取字符串?我不能使用ByteBuffer.array()方法,因爲它拋出了ReadOnlyException。我是否必須使用ByteBuffer.get(arr [])並將其複製出來以讀取數據並創建一個String?看起來很浪費,爲了閱讀它而必須創建一個副本。從ReadOnly中提取字符串java.nio.ByteBuffer
8
A
回答
16
您應該可以使用Charset.decode(ByteBuffer)
,它會將ByteBuffer
轉換爲CharBuffer
。然後就這個電話toString()
。示例代碼:
import java.nio.*;
import java.nio.charset.*;
class Test {
public static void main(String[] args) throws Exception {
byte[] bytes = { 65, 66 }; // "AB" in ASCII
ByteBuffer byteBuffer =
ByteBuffer.wrap(bytes).asReadOnlyBuffer();
CharBuffer charBuffer = StandardCharsets.US_ASCII.decode(byteBuffer);
String text = charBuffer.toString();
System.out.println(text); // AB
}
}
0
ReadOnly緩衝區不能讓您訪問數組,否則您可能會更改它。注意:該字符串有另一個副本作爲char []。如果這是一個問題,我會重新考慮使用只讀緩衝區。
相關問題
- 1. 從字符串中提取字符串
- 2. 從字符串中提取
- 3. 從字符串中提取
- 4. 從字符串中提取字符
- 5. 從字符串中提取字符
- 6. 從字符串中提取子串
- 7. 從字符串中提取子串
- 8. 從字符串中提取符號
- 9. 從字符串中提取一個字
- 10. 從字符串中提取數字
- 11. iMacros:從字符串中提取數字
- 12. 從字符串中提取數字
- 13. 從字符串中提取數字
- 14. 從字符串中提取數字? Java
- 15. R - 從字符串中提取數字
- 16. 從字符串中提取數字
- 17. 從字符串中提取2個字
- 18. R:從字符串中提取數字
- 19. 從字符串中提取數字
- 20. Rapidminer從字符串中提取數字
- 21. 從字符串中提取數字
- 22. 從字符串中提取數字javascript
- 23. 從字符串中提取數字
- 24. Oracle:從字符串中提取數字
- 25. 從html字符串中提取數字
- 26. 提取值從字符串
- 27. 僅提取從字符串
- 28. 提取從字符串
- 29. 提取從字符串
- 30. 提取從字符串