2012-03-07 59 views
0

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

无论如何写缓冲区跳过第一个缓冲区长度?谢谢!

+3

你应该张贴一些(短,涉及的问题)代码 – SJuan76 2012-03-07 23:39:53

+1

事实上,继续添加[SSCCE(HTTP:/ /sscce.org/)。 – paislee 2012-03-07 23:41:27

+0

[如何从Java servlet中的某个偏移量写入字节缓冲区]的可能重复(http://stackoverflow.com/questions/9588359/how-to-write-byte-buffer-from-some-offset-in-java- servlet) – EJP 2012-03-08 00:23:07

回答

3

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

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

+0

谢谢利雅德!你是对的,缓冲区操作没有棘手的部分,只是我已经解决的一些逻辑问题。再次感谢您的建议! – sophia 2012-03-08 15:38:52

5

我用这个代码从ByteBuffer跳过字节:

import java.nio.ByteBuffer; 

public class Utility { 
    public static void skip(ByteBuffer bb, int skip) { 
    bb.position(bb.position() + skip); 
    } 
} 
相关问题