我的原始文件夹中有一个csv文件,它有多列,我能够从第一列读取,它似乎产生csv文件中的所有数据,这不是我想要的,但是当我试着读下一个时,我得到了:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
我尝试了以下编写代码的不同方法,并且我一直得到相同的结果,这里是csv文件的片段:
OrganisationID OrganisationCode
1421 RV9HE
任何人都可以告诉我我出错的地方以及为什么我一直都会这样做?
Caused by:java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 ?
我用这个把头发拉出来,可能是csv文件没有列,而我只是从csv文件的标题中读取?
private String OrganisationID;
private String OrganisationCode;
public String getOrganisationID() {
return OrganisationID;
}
public void setOrganisationID(String organisationID) {
OrganisationID = organisationID;
}
public String getOrganisationCode() {
return OrganisationCode;
}
public void setOrganisationCode(String organisationCode) {
OrganisationCode = organisationCode;
}
while ((line = reader.readLine()) != null) {
String[] RowData = line.split(",");
String setId = RowData[0];
String setCode = RowData[1];
HospitalReader cur = new HospitalReader();
cur.setOrganisationID(setId);
cur.setOrganisationCode(setCode);
this.add(cur);
}
答案 0 :(得分:0)
您需要将Commas放入csv文件中并删除
之间的任何额外行和空格"OrganisationID","OrganisationCode",,,,
"1421","RV9HE",,,,
或者如果您想使用相同的文件
OrganisationID OrganisationCode
1421 RV9HE
然后你需要将参数更改为split方法
String[] RowData = line.split("[ ]+");
答案 1 :(得分:0)
我没有看到您的代码有任何问题,所以只是举个例子,希望您能够发现您的输入是否存在问题。
输入内容(xyz.csv):
"OrganisationID","OrganisationCode"
"1421","RV9HE"
代码:取自https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/
String csvFile = "xyz.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] txt = line.split(cvsSplitBy);
System.out.println(txt[0] + "....." + txt[1]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
"OrganisationID"....."OrganisationCode"
"1421"....."RV9HE"