/** * Returns the next character in the filtered stream. If the desired number of lines have already * been read, the resulting stream is effectively at an end. Otherwise, the next character from * the underlying stream is read and returned. * * @return the next character in the resulting stream, or -1 if the end of the resulting stream * has been reached * @throws IOException if the underlying stream throws an IOException during reading */ public final int read() throws IOException { if (!getInitialized()) { initialize(); setInitialized(true); } while (line == null || line.length() == 0) { line = lineTokenizer.getToken(in); if (line == null) { return -1; } line = stripSection(line); linePos = 0; } int ch = line.charAt(linePos); linePos++; if (linePos == line.length()) { line = null; } return ch; }
/** * Creates a new filtered reader. * * @param in A Reader object providing the underlying stream. Must not be <code>null</code>. */ public StripSection(final Reader in) { super(in); lineTokenizer = new LineTokenizer(); lineTokenizer.setIncludeDelims(true); }