ByteBuffer 相关的数据处理片段 public static final ByteBuffer readLine(ByteBuffer buffer) {ByteBuffer result = ByteBuffer.allocate(buffer.remaining());byte chaz = -1;int position = 0;while (buffer.hasRemaining()) {chaz = buffer.get(
public static final ByteBuffer readLine(ByteBuffer buffer) { ByteBuffer result = ByteBuffer.allocate(buffer.remaining()); byte chaz = -1; int position = 0; while (buffer.hasRemaining()) { chaz = buffer.get(); if (chaz == (byte) '\r') { position = buffer.position(); chaz = buffer.get(); if (chaz == (byte) '\n') { position = buffer.position(); break; } break; } else if (chaz == (byte) '\n') { position = buffer.position(); break; } else { result.put(chaz); } } result.limit(result.position()); result.position(0); buffer.position(position); return result; } public static final String toString(ByteBuffer buffer, Charset charset) { return charset.decode(buffer).toString(); } public static final ByteBuffer toByteBuffer(String src, Charset charset) { return charset.encode(src); } public static final String readLine(ByteBuffer buffer, Charset charset) { ByteBuffer line = readLine(buffer); return charset.decode(line).toString(); } public static void main(String[] args) { Charset charset = Charset.forName("utf-8"); String src = "こんにちは"; ByteBuffer buffer = toByteBuffer(src, charset); System.out.println(toString(buffer, charset)); System.out.println("========================="); src = "こんにちは\r\nこ\rん\rに\nち\nは\n"; buffer = toByteBuffer(src, charset); while(buffer.position() < buffer.limit()) { System.out.println(toString(readLine(buffer), charset)); } }