如何在java中写入字节缓冲区的一半?

时间:2012-03-07 23:38:23

标签: java video bufferedreader bytebuffer

假设每次输入蒸汽的缓冲区读取1000个字节。缓冲区的开头有一些开始标志和视频名称,在实际视频内容之前,如100字节。我不想将它们写入结果缓冲区。所以第一次将101-999写入缓冲区。而第二次我希望写1000-1999。目前,它再次写入0-999,结果视频在实际视频内容之前有900个额外字节。

有没有写缓冲区跳过第一个缓冲区长度?谢谢!

2 个答案:

答案 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)

索菲亚,你真的需要包含示例代码以便人们可以提供帮助,但我从你的标签中看到你可能会问到NIO的ByteBuffer。

你想要做的是通过ByteBuffer.position(int)方法跳过你不想要的内容 - 在ByteBuffer impl中没有魔力,它是一个后备数据存储(一个byte []或者直接内存引用OS)和一系列引用缓冲区中概念位置的int指针(开始,结束,限制等) - 你只是想确保“跳过”你不想要的字节,这可以通过移动位置来完成,这样写下整个缓冲区的下一个操作将从位置开始并进入限制。