Java Buffer rewind()方法及示例
java.nio.ByteBuffer类的 rewind() 方法是用来倒退这个缓冲区的。位置被设置为零,标记被丢弃。在一连串的通道写入或获取操作之前调用这个方法,假设已经适当地设置了限制。调用这个方法既不改变也不丢弃标记的值。
语法
public ByteBuffer rewind()
返回值: 该方法返回这个缓冲区。
下面是说明rewind()方法的例子。
例子 1 :
// Java program to demonstrate// rewind() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // defining and allocating ByteBuffer // using allocate() method ByteBuffer byteBuffer = ByteBuffer.allocate(4); // put byte value in byteBuffer // using put() method byteBuffer.put((byte)20); byteBuffer.put((byte)'a'); // Typecast Bytebuffer to buffer Buffer buffer = (Buffer)byteBuffer; // print the byte buffer System.out.println("Buffer before operation: " + Arrays.toString( (byte[])buffer.array()) + "\nPosition: " + buffer.position() + "\nLimit: " + buffer.limit()); // rewind the Buffer // using rewind() method buffer.rewind(); // print the bytebuffer System.out.println("\nBuffer after operation: " + Arrays.toString( (byte[])buffer.array()) + "\nPosition: " + buffer.position() + "\nLimit: " + buffer.limit()); }}
输出:
Buffer before operation: [20, 97, 0, 0]Position: 2Limit: 4Buffer after operation: [20, 97, 0, 0]Position: 0Limit: 4
例子 2 :
// Java program to demonstrate// rewind() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // defining and allocating ByteBuffer // using allocate() method ByteBuffer byteBuffer = ByteBuffer.allocate(5); // put byte value in byteBuffer // using put() method byteBuffer.put((byte)20); byteBuffer.put((byte)30); byteBuffer.put((byte)40); // mark will be going to discard // by rewind() byteBuffer.mark(); // Typecast Bytebuffer to buffer Buffer buffer = (Buffer)byteBuffer; // print the buffer System.out.println("Buffer before operation: " + Arrays.toString( (byte[])buffer.array()) + "\nPosition: " + buffer.position() + "\nLimit: " + buffer.limit()); // rewind the Buffer // using rewind() method buffer.rewind(); // print the bytebuffer System.out.println("\nBuffer after operation: " + Arrays.toString( (byte[])buffer.array()) + "\nPosition: " + buffer.position() + "\nLimit: " + buffer.limit()); }}输出:
Buffer before operation: [20, 30, 40, 0, 0]Position: 3Limit: 5Buffer after operation: [20, 30, 40, 0, 0]Position: 0Limit: 5
参考资料: https://docs.oracle.com/javase/9/docs/api/java/nio/Buffer.html#rewind-
