really interesting... or really dull. (depends on your attitude)

T

TrevorBoydSmith

ya so I have been working with streams/sockets/files/charstreams etc
etc a lot lately *rolls eyes*. I just found out that when you have a
BufferedReader and you call the ``readline()'' command. It will only
read 30 string ``tokens'' (please see java api for what a token is. In
Stringtokenizer/streamtokenizer).

Basically I found this out because my lines that get printed out are of
variable length. And I counted by hand the tokens in each line and
found that there are 30 tokens.

weird eh?
 
P

Patricia Shanahan

ya so I have been working with streams/sockets/files/charstreams etc
etc a lot lately *rolls eyes*. I just found out that when you have a
BufferedReader and you call the ``readline()'' command. It will only
read 30 string ``tokens'' (please see java api for what a token is. In
Stringtokenizer/streamtokenizer).

Basically I found this out because my lines that get printed out are of
variable length. And I counted by hand the tokens in each line and
found that there are 30 tokens.

weird eh?

It is weird, but there is something else going on. It is not an
inherent BufferedReader behavior. Try running this program:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.StringTokenizer;

public class BufferedReaderTest {
public static void main(String[] args) throws IOException {
// Build a string with a couple of lines, each with lots of
// tokens
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 100; i++) {
sb.append("a, 9, ");
}
sb.append(System.getProperty("line.separator"));
sb.append(sb.toString());
String data = sb.toString();

// Attach a buffered reader to it
BufferedReader reader = new BufferedReader(new StringReader(
data));
System.out.println("Line 1:");
String line1 = reader.readLine();
System.out.println(line1);
System.out.println("Line 2:");
System.out.println(reader.readLine());

// Check the number of tokens
System.out.print("Line 1 tokens = ");
System.out.println(new StringTokenizer(line1).countTokens());
}
}

BufferedReader reads a line that StringTokenizer thinks has 200 tokens.

Patricia
 
T

TrevorBoydSmith

umm well turns out the original post that I made is incorrect. The
reason for this happening was not because of java readline. It was
because of the text file having a mix of \n and \r\n. Resulting in
weird java parsing because it assumes which line feed is specific for a
stream/platform.

sorry folks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top