2017-02-18 14 views
1

Так что мой файл CSV содержит что-то вроде в первенствуетКак начать сканирование со второй строки моих данных CSV в связанный список?

 speed period warning pair 
1  26  1  1  1 
2  26  1  1  1 
3  26  1  1  1 
4  26  1  1  1 

В моем файле сканера у меня есть

public class scanner { 

    public static void main(String[] args) throws IOException { 
     // open file input stream 
     BufferedReader reader = new BufferedReader(new FileReader(
       "amis.csv")); 

     // read file line by line 
     String line = null; 
     Scanner scanner = null; 
     int index = 0; 
     List<amis> empList = new ArrayList<>(); 

     while ((line = reader.readLine()) != null) { 
      amis emp = new amis(); 
      scanner = new Scanner(line); 
      scanner.useDelimiter(","); 
      while (scanner.hasNext()) { 
       String data = scanner.next(); 
       if (index == 0) { 
        emp.setId(data); 
       } else if (index == 4) { 
        emp.setPair(data); 
       } else if (index == 3) { 
        emp.setWarning(data); 
       } else if (index == 2) { 
        emp.setPeriod(data); 
       }else if (index == 1) { 
        emp.setSpeed(data); 
       }else { 
        System.out.println("invalid data::" + data); 
       } 
       index++; 
      } 
      index = 0; 
      empList.add(emp); 
     } 

     //close reader 
     reader.close(); 

     System.out.println(empList); 

    } 

Но выход моего связного списка будет отображаться

ID = "" :: Пара = «пара» :: Предупреждение = «предупреждение» :: Период = «период» :: Скорость = «скорость»,

ID = «1» :: Пара = 1 :: Предупреждение = 1 :: Период = 1 :: Скорость = 26,

ID = "2" :: Пара = 1 :: Предупреждение = 1 :: Период = 1 :: Скорость = 26,

ID = "3" :: Пара = 1 :: Предупреждение = 1 :: Период = 1 :: Скорость = 26,

ID = "4" :: Пара = 1 :: Warning = 1 :: Период = 1 :: Скорость = 26,

Как я просто начать с второй ряд.

+2

Вызов 'reader.readLine();' перед вашим циклом while. –

+0

Вам действительно нужно читать csv-файл? Если не использовать [commons-csv] (https://commons.apache.org/proper/commons-csv/). Если да, попробуйте использовать рекомендуемый способ чтения файлов: [Java try with resources] (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html) – adgon92

+0

@AndyTurner Спасибо! Это разрешило – computer

ответ

2

Вы можете просто позвонить scanner.nextLine, прежде чем время цикла, например:

String headers = reader.nextLine(); 
while ((line = reader.readLine()) != null) { 

Это то, что документация говорит:

Авансы этот сканер мимо текущей строки и возвращает вклад, который был пропущен , Этот метод возвращает остальную часть текущей строки, , за исключением любого разделителя строк в конце. Позиция установлена ​​на , начиная с следующей строки.

Итак, в цикле while вы получите все линии со второй линии.