All getBytes("UTF-8") -> StringUtils
[nikiroo-utils.git] / src / be / nikiroo / utils / streams / BufferedInputStream.java
index af1e2ac932a4abb7d46815d34963dfcf8dbf6305..da862e3f6802aa22f47586196a680d53d89d302f 100644 (file)
@@ -4,6 +4,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
 
+import be.nikiroo.utils.StringUtils;
+
 /**
  * A simple {@link InputStream} that is buffered with a bytes array.
  * <p>
@@ -14,13 +16,22 @@ import java.util.Arrays;
  * @author niki
  */
 public class BufferedInputStream extends InputStream {
+       /**
+        * The size of the internal buffer (can be different if you pass your own
+        * buffer, of course).
+        * <p>
+        * A second buffer of twice the size can sometimes be created as needed for
+        * the {@link BufferedInputStream#startsWith(byte[])} search operation.
+        */
+       static private final int BUFFER_SIZE = 4096;
+
        /** The current position in the buffer. */
        protected int start;
        /** The index of the last usable position of the buffer. */
        protected int stop;
        /** The buffer itself. */
        protected byte[] buffer;
-       /** An End-Of-File (or buffer, here) marker. */
+       /** An End-Of-File (or {@link InputStream}, here) marker. */
        protected boolean eof;
 
        private boolean closed;
@@ -45,7 +56,7 @@ public class BufferedInputStream extends InputStream {
        public BufferedInputStream(InputStream in) {
                this.in = in;
 
-               this.buffer = new byte[4096];
+               this.buffer = new byte[BUFFER_SIZE];
                this.originalBuffer = this.buffer;
                this.start = 0;
                this.stop = 0;
@@ -133,7 +144,7 @@ public class BufferedInputStream extends InputStream {
         *             greater than the internal buffer
         */
        public boolean startsWiths(String search) throws IOException {
-               return startsWith(search.getBytes("UTF-8"));
+               return startsWith(StringUtils.getBytes(search));
        }
 
        /**
@@ -249,7 +260,7 @@ public class BufferedInputStream extends InputStream {
                while (hasMoreData() && done < blen) {
                        preRead();
                        if (hasMoreData()) {
-                               int now = Math.min(blen, stop) - start;
+                               int now = Math.min(blen - done, stop - start);
                                if (now > 0) {
                                        System.arraycopy(buffer, start, b, boff + done, now);
                                        start += now;