org.apache.xerces.impl

Class XMLEntityManager.RewindableInputStream

Enclosing Class:
XMLEntityManager

protected final class XMLEntityManager.RewindableInputStream
extends InputStream

This class wraps the byte inputstreams we're presented with. We need it because java.io.InputStreams don't provide functionality to reread processed bytes, and they have a habit of reading more than one character when you call their read() methods. This means that, once we discover the true (declared) encoding of a document, we can neither backtrack to read the whole doc again nor start reading where we are with a new reader. This class allows rewinding an inputStream by allowing a mark to be set, and the stream reset to that position. The class assumes that it needs to read one character per invocation when it's read() method is inovked, but uses the underlying InputStream's read(char[], offset length) method--it won't buffer data read this way!
Authors:
Neil Graham, IBM
Glenn Marcy, IBM

Constructor Summary

RewindableInputStream(InputStream is)

Method Summary

int
available()
void
close()
void
mark(int howMuch)
boolean
markSupported()
int
read()
int
read(byte[] b, int off, int len)
void
reset()
void
rewind()
void
setStartOffset(int offset)
long
skip(long n)

Constructor Details

RewindableInputStream

public RewindableInputStream(InputStream is)

Method Details

available

public int available()
            throws IOException

close

public void close()
            throws IOException

mark

public void mark(int howMuch)

markSupported

public boolean markSupported()

read

public int read()
            throws IOException

read

public int read(byte[] b,
                int off,
                int len)
            throws IOException

reset

public void reset()

rewind

public void rewind()

setStartOffset

public void setStartOffset(int offset)

skip

public long skip(long n)
            throws IOException

Copyright B) 1999-2005 Apache XML Project. All Rights Reserved.