Esha Ghosh
Esha Ghosh

Reputation: 157

Reading a tab-separated file in Java

I have the following piece of code to read a tab-separated file in Java:

while ((str = in.readLine()) != null) {
  if (str.trim().length() == 0) {
          continue;
  }

  String[] values = str.split("\\t");

  System.out.println("Printing file content:");
  System.out.println("First field" + values[0] + "Next field" +  values[1]);
}

But it's printing 1 instead of the file content. What is wrong here? A line from the sample file reads as follow:

{Amy Grant}{/m/0n8vzn2}{...}

Upvotes: 6

Views: 28142

Answers (2)

Moritz Petersen
Moritz Petersen

Reputation: 13057

Write \t instead of \\t. That would be more of what you want

String[] values = str.split("\t");

I'm using http://sourceforge.net/projects/opencsv/ in some of my projects, and it gets the job done quite well.

Upvotes: 6

Peter Lawrey
Peter Lawrey

Reputation: 533820

Try System.out.println(Arrays.asList(values));

This works! But I need to access the fields separately. Could you plesae tell me what is wring in my code?

I suspect you are getting an IndexOutOfBoundsException. The error you are getting is important and you can't hope to solve the problem if you ignore it.

This would mean you have only one field set.

String[] values = str.split("\\t", -1); // don't truncate empty fields

System.out.println("Printing file content:");
System.out.println("First field" + values[0] + 
   (values.length > 1 ? ", Next field" +  values[1] : " there is no second field"));

Upvotes: 14

Related Questions