+++ /dev/null
-package tim.prune.save.xml;
-
-import java.nio.charset.Charset;
-
-/**
- * Class to collect the bytes from an input stream
- * and turn them into a String
- */
-public class ByteBuffer
-{
- // Array of bytes
- private byte[] _bytes = new byte[1024];
- // Current position to append
- private int _currPos = 0;
- // Flag for recognising utf8 encoded streams
- private boolean _streamUtf8 = false;
- // Flag for whether system is utf8 or not
- private final boolean _systemUtf8 = XmlUtils.isSystemUtf8();
-
- /**
- * Append the given byte to the buffer
- * @param inB byte to append
- */
- public void appendByte(byte inB)
- {
- // Resize array if necessary
- if (_currPos >= _bytes.length)
- {
- byte[] bigger = new byte[_bytes.length * 2];
- System.arraycopy(_bytes, 0, bigger, 0, _bytes.length);
- _bytes = bigger;
- }
- // Append byte and increment counter
- _bytes[_currPos] = inB;
- _currPos++;
- }
-
- /**
- * Clear the buffer and reset
- */
- public void clear()
- {
- _currPos = 0;
- // Reduce size back to default if it's got too big
- if (_bytes.length > 5000) {
- _bytes = new byte[1024];
- }
- }
-
- /**
- * Set the flag that this stream is encoded with utf8
- */
- public void setEncodingUtf8() {
- _streamUtf8 = true;
- }
-
- /**
- * @return contents of buffer as a String
- */
- public String toString()
- {
- // Sometimes the encoding of the read file isn't the default encoding of the system
- if (_streamUtf8 && !_systemUtf8)
- {
- return new String(_bytes, 0, _currPos, Charset.forName("UTF-8"));
- }
- // Otherwise just use system encoding
- return new String(_bytes, 0, _currPos);
- }
-
- /**
- * Look for the given character sequence in the last characters read
- * @param inChars sequence to look for
- * @return true if sequence found
- */
- public boolean foundSequence(char[] inChars)
- {
- final int numChars = inChars.length;
- if (_currPos < numChars) {return false;}
- for (int i=0; i<numChars; i++)
- {
- char searchChar = inChars[numChars - 1 - i];
- char sourceChar = (char) _bytes[_currPos - 1 - i];
- if (searchChar != sourceChar) {return false;}
- }
- return true;
- }
-}