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

Discussion in 'Java' started by TrevorBoydSmith@gmail.com, Aug 31, 2006.

  1. Guest

    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?
     
    , Aug 31, 2006
    #1
    1. Advertising

  2. wrote:
    > 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
     
    Patricia Shanahan, Aug 31, 2006
    #2
    1. Advertising

  3. Guest

    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
     
    , Sep 1, 2006
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. moo moo
    Replies:
    0
    Views:
    489
    moo moo
    Jul 21, 2003
  2. welsungo
    Replies:
    0
    Views:
    9,945
    welsungo
    Mar 5, 2005
  3. Batista, Facundo

    print attitude

    Batista, Facundo, Jul 4, 2003, in forum: Python
    Replies:
    5
    Views:
    443
    Donn Cave
    Jul 8, 2003
  4. Replies:
    0
    Views:
    113
  5. Elegance is an attitude

    , Oct 19, 2008, in forum: Javascript
    Replies:
    0
    Views:
    121
Loading...

Share This Page