Java Buffer flip()方法及示例

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

Java Buffer flip()方法及示例

java.nio.ByteBuffer类flip() 方法是用来翻转这个缓冲区的。限制被设置为当前位置,然后位置被设置为零。如果定义了标记,那么它将被丢弃。在一连串的通道读或放操作之后,调用这个方法为一连串的通道写或相对的获取操作做准备。

比如说

buf.put(magic);    // Prepend headerin.read(buf);      // Read data into rest of bufferbuf.flip();        // Flip bufferout.write(buf);    // Write header + data to channel

当把数据从一个地方传输到另一个地方时,这个方法通常与 compact() 方法一起使用。

语法

public Buffer flip()

返回值: 该方法返回这个缓冲区。

下面是说明flip()方法的例子。

例子 1 :

// Java program to demonstrate// flip() method  import java.nio.*;import java.util.*;  public class GFG {    public static void main(String[] args)    {          // Declare and initialize the byte array        byte[] bb = { 10, 20, 30 };          // wrap the byte array into ByteBuffer        // using wrap() method        ByteBuffer byteBuffer = ByteBuffer.wrap(bb);          // Typecast ByteBuffer to Buffer        Buffer buffer = (Buffer)byteBuffer;          // set position at index 1        buffer.position(1);          // print the buffer        System.out.println("Buffer before flip: "                           + Arrays.toString((byte[])buffer.array())                           + "\nPosition: " + buffer.position()                           + "\nLimit: " + buffer.limit());          // Flip the Buffer        // using flip() method        buffer.flip();          // print the buffer        System.out.println("\nBuffer after flip: "                           + Arrays.toString((byte[])buffer.array())                           + "\nPosition: " + buffer.position()                           + "\nLimit: " + buffer.limit());    }}

输出:

Buffer before flip: [10, 20, 30]Position: 1Limit: 3Buffer after flip: [10, 20, 30]Position: 0Limit: 1

例子 2 :

// Java program to demonstrate// flip() 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)30);          // Typecast ByteBuffer to Buffer        Buffer buffer = (Buffer)byteBuffer;          // set position at index 1        buffer.position(1);          // print the buffer        System.out.println("Buffer before flip: "                           + Arrays.toString((byte[])buffer.array())                           + "\nPosition: " + buffer.position()                           + "\nLimit: " + buffer.limit());          // Flip the Buffer        // using flip() method        buffer.flip();          // print the buffer        System.out.println("\nBuffer after flip: "                           + Arrays.toString((byte[])buffer.array())                           + "\nPosition: " + buffer.position()                           + "\nLimit: " + buffer.limit());    }}

输出:

Buffer before flip: [20, 30, 0, 0]Position: 1Limit: 4Buffer after flip: [20, 30, 0, 0]Position: 0Limit: 1

参考资料: https://docs.oracle.com/javase/9/docs/api/java/nio/Buffer.html#flip-

相关推荐