X-Git-Url: http://source.jalview.org/gitweb/?p=jalviewjs.git;a=blobdiff_plain;f=src%2Fjavajs%2Futil%2FLimitedLineReader.java;fp=src%2Fjavajs%2Futil%2FLimitedLineReader.java;h=e1d973fe583425531a61c490af7b4d4f35e23984;hp=05ab2db84193bf54820eab2339206af850cb5a50;hb=b9b7a352eee79b7764c3b09c9d19663075061d8c;hpb=7301a2415adab88038b291fc54caeeb3a5a47a44 diff --git a/src/javajs/util/LimitedLineReader.java b/src/javajs/util/LimitedLineReader.java index 05ab2db..e1d973f 100644 --- a/src/javajs/util/LimitedLineReader.java +++ b/src/javajs/util/LimitedLineReader.java @@ -1,48 +1,48 @@ -package javajs.util; - -import java.io.BufferedReader; - -/** - * A simple class to read a designated number of bytes from a - * file and then return them line by line, skipping lines that - * start with #, and including the \n or \r characters at line ends. - * - * Generally useful for determining what sort of data a file contains. - * - */ -public class LimitedLineReader { - private char[] buf; - private int cchBuf; - private int ichCurrent; - - public LimitedLineReader(BufferedReader bufferedReader, int readLimit) - throws Exception { - bufferedReader.mark(readLimit + 1); - buf = new char[readLimit]; - cchBuf = Math.max(bufferedReader.read(buf, 0, readLimit), 0); - ichCurrent = 0; - bufferedReader.reset(); - } - - public String getHeader(int n) { - return (n == 0 ? new String(buf) : new String(buf, 0, Math.min(cchBuf, n))); - } - - public String readLineWithNewline() { - while (ichCurrent < cchBuf) { - int ichBeginningOfLine = ichCurrent; - char ch = 0; - while (ichCurrent < cchBuf && - (ch = buf[ichCurrent++]) != '\r' && ch != '\n') { - } - if (ch == '\r' && ichCurrent < cchBuf && buf[ichCurrent] == '\n') - ++ichCurrent; - int cchLine = ichCurrent - ichBeginningOfLine; - if (buf[ichBeginningOfLine] == '#') - continue; // flush comment lines; - return new String(buf, ichBeginningOfLine, cchLine); - } - return ""; - } -} - +package javajs.util; + +import java.io.BufferedReader; + +/** + * A simple class to read a designated number of bytes from a + * file and then return them line by line, skipping lines that + * start with #, and including the \n or \r characters at line ends. + * + * Generally useful for determining what sort of data a file contains. + * + */ +public class LimitedLineReader { + private char[] buf; + private int cchBuf; + private int ichCurrent; + + public LimitedLineReader(BufferedReader bufferedReader, int readLimit) + throws Exception { + bufferedReader.mark(readLimit + 1); + buf = new char[readLimit]; + cchBuf = Math.max(bufferedReader.read(buf, 0, readLimit), 0); + ichCurrent = 0; + bufferedReader.reset(); + } + + public String getHeader(int n) { + return (n == 0 ? new String(buf) : new String(buf, 0, Math.min(cchBuf, n))); + } + + public String readLineWithNewline() { + while (ichCurrent < cchBuf) { + int ichBeginningOfLine = ichCurrent; + char ch = 0; + while (ichCurrent < cchBuf && + (ch = buf[ichCurrent++]) != '\r' && ch != '\n') { + } + if (ch == '\r' && ichCurrent < cchBuf && buf[ichCurrent] == '\n') + ++ichCurrent; + int cchLine = ichCurrent - ichBeginningOfLine; + if (buf[ichBeginningOfLine] == '#') + continue; // flush comment lines; + return new String(buf, ichBeginningOfLine, cchLine); + } + return ""; + } +} +