开发者

Search in a InputStream

Is there a way to do a efficient search for 2 fix bytes on an Inp开发者_JS百科utStream?

Background

I have to deal with Multipart Http traffic on Android. (Motion JPEG from a IP Webcam).

I already found some Classes on anddev.org to deal with it. Now I do some performance improvements. To find the start of a JPEG, I need to find the magic number for JPEGs (SOI=FFD8) in the InputStream.


Since you've no idea where in the stream those 2 bytes are, you'll have to look at the entire input. That means, your performance will be at least linear. Two find two bytes linearly is straightforward:

static long search(InputStream inputStream) throws IOException {
    BufferedInputStream is = new BufferedInputStream(inputStream);
    int previous = is.read(read);
    long pos = 0;
    int current;
    while((current = is.read()) != -1) {
        pos++;
        if(previous == 0xff && current == 0xd8) {
            return pos;
        }
        last = current;
    }
    throw new RuntimeException("There ain't no pic in here.");
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜