package loon.utils; import java.io.IOException; import loon.LRelease; public class ArrayByteReader implements LRelease { private static final byte R = '\r'; private static final byte N = '\n'; private ArrayByte in; public ArrayByteReader(ArrayByte stream) { in = stream; } public void close() { in.close(); } public void skip(long n) throws IOException { if (in == null) { return; } in.skip(n); } public int read() { int c = -1; if (in == null) { return c; } return c = in.readByte(); } public int read(byte[] buf) { int c = -1; if (in == null) { return c; } return c = in.read(buf); } public int read(byte[] buf, int offset, int length) { int c = -1; if (in == null) { return c; } return c = in.read(buf, offset, length); } public String readLine() throws IOException { if (in == null) { return ""; } if (in.available() <= 0) { return null; } StringBuilder sbr = new StringBuilder(); int c = -1; boolean keepReading = true; do { c = in.readByte(); switch (c) { case N: keepReading = false; break; case R: continue; case -1: return null; default: sbr.append((char) c); } } while (keepReading); return sbr.toString(); } }