假设每次输入蒸汽的缓冲区读取1000个字节。缓冲区的开头有一些开始标志和视频名称,在实际视频内容之前,如100字节。我不想将它们写入结果缓冲区。所以第一次将101-999写入缓冲区。而第二次我希望写1000-1999。目前,它再次写入0-999,结果视频在实际视频内容之前有900个额外字节。
有没有写缓冲区跳过第一个缓冲区长度?谢谢!
答案 0 :(得分:5)
我使用此代码从ByteBuffer中跳过字节:
import java.nio.ByteBuffer;
public class Utility {
public static void skip(ByteBuffer bb, int skip) {
bb.position( bb.position() + skip);
}
}
答案 1 :(得分:3)
你想要做的是通过ByteBuffer.position(int)方法跳过你不想要的内容 - 在ByteBuffer impl中没有魔力,它是一个后备数据存储(一个byte []或者直接内存引用OS)和一系列引用缓冲区中概念位置的int指针(开始,结束,限制等) - 你只是想确保“跳过”你不想要的字节,这可以通过移动位置来完成,这样写下整个缓冲区的下一个操作将从位置开始并进入限制。