1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.formats.pnm;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21
22 import org.apache.commons.imaging.ImagingException;
23
24 final class WhiteSpaceReader {
25 private final InputStream is;
26
27 WhiteSpaceReader(final InputStream is) {
28 this.is = is;
29 }
30
31 public char nextChar() throws IOException {
32 char c = read();
33
34 if (c == '#') {
35 while (c != '\n' && c != '\r') {
36 c = read();
37 }
38 }
39 return c;
40 }
41
42 private char read() throws IOException {
43 final int result = is.read();
44 if (result < 0) {
45 throw new ImagingException("PNM: Unexpected EOF");
46 }
47 return (char) result;
48 }
49
50 public String readLine() throws IOException {
51 final StringBuilder buffer = new StringBuilder();
52 for (char c = read(); c != '\n' && c != '\r'; c = read()) {
53 buffer.append(c);
54 }
55 return buffer.length() > 0 ? buffer.toString() : null;
56 }
57
58 public String readtoWhiteSpace() throws IOException {
59 char c = nextChar();
60
61 while (Character.isWhitespace(c)) {
62 c = nextChar();
63 }
64
65 final StringBuilder buffer = new StringBuilder();
66
67 while (!Character.isWhitespace(c)) {
68 buffer.append(c);
69 c = nextChar();
70 }
71
72 return buffer.toString();
73 }
74 }