当前位置 : 主页 > 编程语言 > java >

ByteBuffer 相关内容

来源:互联网 收集:自由互联 发布时间:2021-06-28
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(
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();
			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));
		}
	}
网友评论