BufferedReader reader = new BufferedReader(in);
try {
String line = reader.readLine();
while (line != null) {
result.append(line);
line = reader.readLine();
if (line != null) {
result.append("\n");
}
}
}
您好,我想读取一个csv文件并将每一行保存到一个数组中,但我的代码在每个文本行后面都会读取一个空行。如果我将csv保存为txt并尝试使用相同的代码。 - 你在这里找到csv文件https://www.dropbox.com/s/3wgl24tikm5xj6f/2408201406022015.csv?dl=0
我做错了什么?
答案 0 :(得分:3)
来自Javadoc for BufferedReader:
一行由零个或多个字符表示,后跟' \ n', ' \ r'," \ r \ n"或读者的结尾
当我查看你在十六进制编辑器中指定的csv文件时,我看到\ n \ r \ n这对很奇怪。通常情况下,您会看到以\ r \ n。
结尾的行这就解释了为什么读者会用额外的空行来解释事物。
使用String.trim()方法修剪前导和尾随空格,然后检查生成的String的长度,以查看是否将其附加到StringBuilder。
另外,请务必在完成后关闭最后一个块中的BufferedReader。
类似的东西:
StringBuilder result = new StringBuilder();
BufferedReader reader = null;
try {
reader = new BufferedReader(in);
String line;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (line.length() > 0) {
result.append(line);
result.append('\n');
}
}
} catch (IOException e) {
}
finally {
if (reader != null) {
try {reader.close();} catch (IOException e) {}
}
}
System.out.println(result.toString());