package Netty与NIO的前生今世3;
import java.nio.ByteBuffer;
/**
* 只读缓冲区
* 只读缓冲区,可以读,但是不能写。通过调用缓冲区的asReadOnlyBuffer()方法,将任何
* 常规缓冲区转换为只读缓冲区,这个方法返回一个与原缓冲区完全相同的缓冲区,并与原缓
* 冲区共享数据,只不过它是只读的。如果缓冲区发生了变化,则只读缓冲区的内容也会发生变化。
*
* 如果尝试修改只读缓冲区的内容,则会报ReadOnlyBufferException异常,只读缓冲区对于保护
* 数据很有作用。在将缓冲区传递给某个对象的方法时,无法知道这个方法是否会修改缓冲区的数据。
* 创建一个只读缓冲区可以保证该缓冲区不会修改,只可以把常规缓冲区转换为只读缓冲区,而不是
* 将只读缓冲区转换为可写的缓冲区。
*
*/
class ReadOnlyBuffer{
public ReadOnlyBuffer(){
ByteBuffer byteBuffer=ByteBuffer.allocate(10);
//缓冲区中的数据
ByteBuffer readonly=byteBuffer.asReadOnlyBuffer();
//改变原缓冲区的内容
for(int i=0;i<byteBuffer.capacity();i++){
byte b=byteBuffer.get(i);
b*=10;
byteBuffer.put(b);
}
readonly.position(0);
readonly.limit(byteBuffer.capacity());
//缓冲区的内容也随之改变
while (readonly.remaining()>0){
System.out.println(readonly.get());
}
}
}
public class N3115 {
public static void main(String[] args) {
N3115 n3115=new N3115();
}
}
只读缓冲区-N3115
最新推荐文章于 2024-07-16 14:27:03 发布