Java Buffer rewind()方法及示例

来源:这里教程网 时间:2026-02-17 20:37:16 作者:

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-

相关推荐