gpt4 book ai didi

java - ByteBuffer 和部分写入

转载 作者:行者123 更新时间:2023-11-30 07:38:07 26 4
gpt4 key购买 nike

如果 ByteBuffer 被部分写入,position 会更新,下一个 _channel.write 调用将从上一个位置恢复,是吗?

compact() 没有必要吗?

private AsynchronousSocketChannel _channel;
private ByteBuffer _buffer;

final CompletionHandler<Integer, LogstashClientStream> _writeCompletionHandler = new CompletionHandler<Integer, LogstashClientStream>(){
@Override
public void completed(Integer sent, LogstashClientStream self) {
if( _buffer.remaining() == 0 ){
_buffer.clear();
//...
}
else {
// partial write
self.send();
}
}

@Override
public void failed(Throwable exc, LogstashClientStream self) {
//...
}
};

private void send(){
try{
_channel.write( _buffer, this, _writeCompletionHandler);
} catch(Throwable e){
//...
}
}

最佳答案

是的,它将恢复,并且不,这里不需要compact()。它主要在您想要在再次调用 write() 之前从某个输入流填充缓冲区的其余部分的情况下有用。

关于java - ByteBuffer 和部分写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com