代码创建不同的不同结果读取csv文件和txt文件 - java

时间:2015-02-18 21:14:06

标签: java csv readfile

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

我做错了什么?

1 个答案:

答案 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());