难以在java中读取csv;使用eclipse

时间:2016-02-16 17:09:17

标签: java eclipse csv

我正在服用AP CompSci A,我们正在开发一个带有.csv文件的项目。

现在,我正在尝试解析/读取java中的.csv文件(包含字符的十六进制代码),这样我最终可以编写一个applet,在用户提示时将字符转换为十六进制定义。 下面是我试图用来读取.csv文件的代码。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;




public class showfont {


public static void main ( String [] args) {

    showfont obj = new showfont();
    obj.run();

}

public void run() {

    String csvFile = "/Users/rmollo/Desktop/entityfacts.csv";
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ",";

    try {

        br = new BufferedReader(new FileReader(csvFile));
        while ((line = br.readLine()) != null) {
            String[] answer = line.split(cvsSplitBy);

            System.out.println("test [hex=  " + answer[2]
                    + " "
                    + ", description=" +answer[5] + "]");

}
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br !=null ) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    System.out.println("Done");
}
}

当我运行此命令时,收到以下错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at showfont.run(showfont.java:37)
at showfont.main(showfont.java:20)

我确信这是一个措辞严厉的问题(这是我的第一个问题),但如果有人可以向我解释这些错误意味着什么/我如何解决它们,那将非常感激!

谢谢!

3 个答案:

答案 0 :(得分:1)

在您的拆分下添加:

if (answer.length < 6) { System.out.println("Line "+line+" is too short"); continue; }

并检查它是否打印任何内容。

答案 1 :(得分:0)

问题似乎在于以下几行:

System.out.println("test [hex=  " + answer[2]
                + " "
                + ", description=" +answer[5] + "]");

你的指数超出范围。

答案 2 :(得分:0)

如果文件是这个(https://wush.net/svn/mindprod/com/mindprod/entities/entityfacts.csv),则必须跳过没有逗号的注释行

if(!line.startsWith("#")){

    //split code
    ...

添加更多控件以跳过&#34;不常见&#34;线。