Reputation: 157
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
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
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