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

code creates different different results Reading csv file and txt file - java

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

我做错了什么?

来自缓冲的 JavadocReader:

A line is represented by zero or more characters followed by '\n', '\r', "\r\n" or the end of the reader

当我查看您在十六进制编辑器中指定的 csv 文件时,我看到 \n\r 对,这很奇怪。通常,您会看到以 \r\n.

结尾的行

这就解释了为什么 Reader 用一个额外的空行来解释事物。

使用 String.trim() 方法 trim 前导和尾随空格,然后检查生成的字符串的长度以查看是否将其附加到您的 StringBuilder。

此外,请务必在完成后在 finally 块中关闭 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());