Java:无法读取由';'分隔的CSV文件并且由' \ n'

时间:2015-08-10 09:07:35

标签: java csv

  public static void main(String[] args) throws IOException {
        String dataRow;
     BufferedReader CSVFile = 
                new BufferedReader(new FileReader("test.csv"));

          while ((dataRow = CSVFile.readLine()) != null) {
                System.out.println(dataRow.split(";")[0]);
            }
          // Close the file once all data has been read.
          CSVFile.close();

          // End the printout with a blank line.
          System.out.println("Done");

}

我试图在普通文本视图中阅读的CSV文件

ID;Numbers
12;234
343;233

我能够打印的所有空间都没有字符串。

输出

      1. ��I
      2. 
      3. 
      4. 
      Done

文件编码仅为#34; UNICODE"

如何在java中读取Unicode文件。 我是否必须在FileReader java类construtor中设置参数设置文件的编码类型?

请告知。

2 个答案:

答案 0 :(得分:1)

public static void main(String[] args) throws IOException {
    String dataRow;
    BufferedReader CSVFile = new BufferedReader(new FileReader("F:\\csv.csv"));
    while ((dataRow = CSVFile.readLine()) != null) {
        String []data = dataRow.split(";");
        for (String d : data) {
            System.out.print(d + " ");
        }
        System.out.println();
    }
    CSVFile.close();
    System.out.println("Done");

}

结果如下所示:

ID Numbers 
12 234 
343 233 
Done

获取文件编码的方式如下所示

enter image description here

使用nodepad编辑器打开csv文件,然后点击file -> save as

答案 1 :(得分:0)

如果文件编码为unicode,则在读取文件时,可以将文件编码参数传递给函数

fllowing代码在

之下
    public static void main(String[] args) throws IOException {
    String dataRow;
    BufferedReader CSVFile = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\csv.csv"),"unicode"));
    while ((dataRow = CSVFile.readLine()) != null) {
        String []data = dataRow.split(";");
        for (String d : data) {
            System.out.print(d + " ");
        }
        System.out.println();
    }
    CSVFile.close();
    System.out.println("Done");
}

如果您没有传递文件编码参数,那么当您阅读文件内容时,编码取决于您的os