在 java 中读取 CSV 时,第一行的第一列中缺少元素

Element missing in the first column of the first row when reading CSV in java

提问人:Jimmy 提问时间:9/19/2023 更新时间:9/19/2023 访问量:16

问:

我有一个csv文件:

A,1
B,2
C,3

每当我尝试使用 .charAt(0) 获取第一行第一列的字符时,它都不会返回任何内容。

我尝试逐行读取csv并打印整行和第一列中的元素,得到以下预期结果:

[A,1]
A
[B,2]
B
[C,3]
C

但是,我得到了这个作为输出,第一行的第一个元素丢失了:

[A,1]

[B,2]
B
[C,3]
C

这是我的代码:

package application;

import java.io.*;
import java.util.Arrays;

public class trail {

 public static void main(String[] args) {
  
  String file = "src/Book4.csv";
  BufferedReader reader = null;
  String line = "";
  


  
  try {
      reader = new BufferedReader(new FileReader(file));
      while ((line = reader.readLine()) != null) {
          String[] row = line.split(",");           
          System.out.println(Arrays.toString(row));
          System.out.println(row[0].charAt(0));
          
                         
      }
  } catch (Exception e) {
      e.printStackTrace();
  } finally {
      try {
          reader.close();
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
  
    
 }
 
 
 
}

但是如果我将 更改为 ,它会正确输出,但我稍后需要该元素作为 char。System.out.println(row[0].charAt(0));System.out.println(row[0]);

java 字符 读取.csv

评论

0赞 Diego Borba 9/19/2023
它对我有用......
1赞 g00se 9/19/2023
确保您的输入文件未使用字节顺序标记 (BOM) 保存。Java 不会将它们作为特殊处理Reader
0赞 g00se 9/19/2023
System.out.printf("%04x%n", (int)row[0].charAt(0));可能很有趣
0赞 Jimmy 9/19/2023
@g00se哼哼......太奇怪了,在我使用“文本编辑”应用程序打开 csv 并再次保存后,它突然起作用(我以前使用过 excel,我认为这就是原因,因为我尝试复制文件并再次出现错误)。但是我尝试了你的代码,在它起作用之前,对于缺少的“A”,我得到了“feff”,这与我得到的其他数字不同,例如 0042 ......
0赞 g00se 9/19/2023
我得到“feff”这就是 BOM

答: 暂无答案