Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading a tab-separated file in Java

Tags:

java

file-io

csv

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}{...}
like image 293
Esha Ghosh Avatar asked Jan 16 '13 15:01

Esha Ghosh


1 Answers

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"));
like image 152
Peter Lawrey Avatar answered Oct 04 '22 04:10

Peter Lawrey