📅  最后修改于: 2023-12-03 14:42:59.055000             🧑  作者: Mango
Java中的缓冲区是对底层字节数组的封装,提供了一系列读写操作。rewind() 方法是缓冲区的一个方法,用来将位置的值设置为缓冲区的起始位置,即将 position
置为0。
public Buffer rewind()
在从缓冲区中读取数据时,读取到最后一个字节后, position
的值会等于缓冲区的容量值。如果要再次读取缓冲区的数据,需要将 position
的值重新置为0。此时可以使用 rewind()
方法,将 position
重置为0。
import java.nio.*;
public class DemoRewind {
public static void main(String[] args) {
CharBuffer buffer = CharBuffer.allocate(10);
buffer.put('A');
buffer.put('B');
buffer.put('C');
buffer.rewind(); // 重置位置为0
System.out.println(buffer.get()); // 输出 'A'
System.out.println(buffer.get()); // 输出 'B'
System.out.println(buffer.get()); // 输出 'C'
buffer.rewind(); // 再次重置位置为0
buffer.put('D');
buffer.put('E');
buffer.put('F');
buffer.rewind(); // 再次重置位置为0
System.out.println(buffer.get()); // 输出 'D'
System.out.println(buffer.get()); // 输出 'E'
System.out.println(buffer.get()); // 输出 'F'
}
}
在上面的示例中,首先创建一个容量为10的 CharBuffer
缓冲区。之后向缓冲区中存储了3个字符 'A', 'B', 'C'。使用 rewind()
方法重置位置,再使用 get()
方法获取缓冲区中的数据,输出结果为 'A', 'B', 'C'。再次重置位置,向缓冲区中存储3个字符 'D', 'E', 'F'。重置位置后,再次输出缓冲区中的数据,输出结果为 'D', 'E', 'F'。
rewind()
方法会重置位置,但不会重置任何标记或模式设置。rewind()
方法不会造成副作用。clear()
方法。