下面显示的示例告诉您如何重新读取缓冲区的内容。要从缓冲区重新读取数据,我们可以使用缓冲区的rewind()方法。该方法将位置重新设置为0限制不变,但仍保持可从缓冲区读取多少数据的值。
package org.nhooo.example.io;
import java.nio.CharBuffer;
public class BufferRewind {
public static void main(String[] args) {
CharBuffer buffer = CharBuffer.allocate(1024);
buffer.put("The quick brown fox jumps over the lazy dog.");
buffer.flip();
// 使用get()方法调用读取缓冲区的数据。
while (buffer.hasRemaining()) {
System.out.print(buffer.get());
}
System.out.println();
// 倒带缓冲区会将位置设置回0。
// 我们倒回缓冲区,以便我们可以重新读取缓冲区
// 数据用于其他目的。
buffer.rewind();
// 重新读取缓冲区并将其数据附加到StringBuilder
// 目的。
StringBuilder bufferText = new StringBuilder();
while (buffer.hasRemaining()) {
bufferText.append(buffer.get());
}
System.out.println(bufferText);
}
}代码段的输出:
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.