1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.millscript.millscript.loaders;
22
23
24 import java.io.IOException;
25 import java.io.Reader;
26
27 /**
28 * This is the base class for all text based loaders. A text loader is one that
29 * reads the contents of a file as unicode data and then does something with it.
30 */
31 abstract class AbsTextLoader extends ValueLoader {
32
33 /**
34 * Returns a StringBuffer holding all the available characters that can be
35 * read from the specified Reader.
36 *
37 * @param reader the reader to read characters from
38 * @return a StringBuffer holding all the available charactes from the
39 * Reader
40 * @throws IOException thrown if there is a problem reading from the
41 * reader
42 */
43 final StringBuffer readAllIntoBuffer( final Reader reader ) throws IOException {
44 StringBuffer buff = new StringBuffer();
45 char[] cbuff = new char[ 1024 ];
46 for (;;) {
47 int n = reader.read( cbuff, 0, 1024 );
48 if ( n == -1 ) {
49 return buff;
50 }
51 buff.append( cbuff, 0, n );
52 }
53 }
54
55 /**
56 * Returns a String holding all the characters available in the Reader.
57 *
58 * @param reader the reader to read characters from
59 * @return a String holding all the available characters from the Reader
60 * @throws IOException thrown if there is a problem reading from the
61 * Reader
62 */
63 final String readAll( final Reader reader ) throws IOException {
64 return readAllIntoBuffer( reader ).toString();
65 }
66
67 }