2013-01-30 5 views
1

Я пытаюсь прочитать файл csv и скопировать его данные в массив. Кажется, я не могу заставить его работать так, и я не знаю, почему.Проблемы с использованием java.arraycopy. (ArrayIndexOutofBounds)

String[] row = new String[0]; 
ArrayList<String[]> csv = new ArrayList<>(); 

String parser = "SPImages"; 
CSVReader reader = new CSVReader(new FileReader("C://data.csv")); 
String[] nextLine; 


while ((nextLine = reader.readNext()) != null){ 
    System.arraycopy(nextLine, 0, row, 0, nextLine.length); 
} 
+2

Ну, насколько велика «строка»? В самом деле, каков его тип? –

+0

Я обновил свой вопрос кодом, в котором я создаю 'row' –

+0

' row' должен иметь как минимум размер 'nextLine.length'! – MrSmith42

ответ

3

Скорее всего массива назначения (в данном случае «ряд») не так велика, как исходный массив (в данном случае «nextLine»). Массивы, в отличие от списков, не изменяются автоматически.

+0

Итак, я должен создать 'row' после нахождения размера' nextLine', да? –

+0

Точно, ваша строка должна иметь соответствующий размер, как описано здесь: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#arraycopy%28java.lang.Object ,% 20int,% 20java.lang.Object,% 20int,% 20int% 29 – zibi

+0

Да, теперь, когда исходный код был обновлен, чтобы включить объявление строки, это проблема. Вам нужно будет создавать «строку» заново каждый раз в цикле, иначе вы будете просто копировать свои данные каждый раз. – jfrank