對於Java作業分配,我需要創建一個讀取和寫入CSV文件的類。我目前在閱讀CSV時遇到了一些問題。下面的代碼僅輸出代碼的第一行,然後生成以下錯誤消息:'線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:1在com.gc01.FileManager.CSVManager.main(CSVManager.java: 27)「。在Java中讀取CSV文件時出現問題。只讀第一行
我已經看過各種示例,並且我知道'opencsv'包,但我需要自己編寫此代碼。我將問題定位到語句」System.out.print (數據[1])。」然而,當交叉引用這段代碼這一切似乎是罰款
我使用到從FileInput類的方法,由我的老師(http://www.devjavasoft.org/SecondEdition/SourceCode/Share/FileInput.java)指定
。public class CSVManager {
public static void main(String [] args){
Scanner sc = new Scanner (System.in);
System.out.println("Please enter the file directory of the chosen CSV");
System.out.println("For Example: /Users/UserName/Downloads/FileName.csv");
///Users/ReeceAkhtar/Desktop/GeoIPCountryWhois.csv
final String fileName = sc.nextLine();
System.out.println("How many columns?");
final int columns = sc.nextInt();
BufferedReader br = null;
String line = "";
String splitBy = " , ";
try {
br = new BufferedReader(new FileReader(fileName));
while((line = br.readLine()) != null) {
for (int i = 0; i < columns; i++) {
String[] data = line.split(splitBy);
System.out.print(data[i]);
}
}
} 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("File Read");
}
}
據推測,該行實際上不包含用戶指定的欄數。請注意,您應該在* for'循環之前執行拆分*,因此您只需執行一次,而不是每列執行一次(在同一行數據中)。 –