2013-05-05 5 views
0

Я пытаюсь получить значения из второй последней строки и третьего столбца в файле с разделителями с запятой. Я не могу сидеть, чтобы получить значения со второй последней строки и третьей колонки.OpenCSV Получить значение из последней строки и конкретного столбца

Я искал способ достижения этого, но он был бесплодным. Я был бы очень признателен, если бы кто-нибудь мог указать мне в правильном направлении с примером.

Это код, который я до сих пор:

private static void readmyfile() throws IOException { 

    String csvFilename = "C:/test.csv"; 

    CSVReader reader = new CSVReader(new FileReader(csvFilename),';', '\'', 1); 
    String[] nextLine; 

    int rowNumber=-1; 

    nextLine=reader.readNext(); 
    while (nextLine!=null){ 
     rowNumber++; 

     String speed = nextLine[rowNumber]; 
     System.out.println(speed); 
     nextLine=reader.readNext(); 

    } 
} 

Мой файл отформатирован так:

Number; ID; NUM; Counter; Time 
1;CCF;9999;1;18:07:05 
1;CC8;8888;1;18:07:15 
1;CC1;8888;1;18:07:15 
1;DC7;1111;1;18:07:15 
Date:;01/01/2000; Read:;5; on:;01.05; off:;02.04 

ответ

1

Хотя вы читаете 2 й последней строки, это может возможно, изменить на 3 rd или 4 th последние строки. Выполнение пользовательского решения здесь определенно окажется хрупким. Поэтому, используя циклический буфер, такие как Апач CircularFifoBuffer позволит линия должна быть добавлена ​​без необходимости поддерживать отсчет позиции:

CSVReader reader = new CSVReader(new FileReader(csvFilename), ';', '\'', 1); 

int rowCount = 2;         // save last 2 lines 
Buffer<String[]> savedBuffer = new CircularFifoBuffer<String[]>(rowCount); 
String[] nextLine; 
while ((nextLine = reader.readNext()) != null) { 
    savedBuffer.add(nextLine); 
} 

int columnIndex = 2; // zero based 
System.out.println(savedBuffer.get()[columnIndex]); 

Примечания: Вам потребуются Generics version of Commons-Collections для этого примера.

+0

Благодарим вас за ответ, но у csv действительно есть тысячи строк. Я просто разместил фрагмент. В идеале, я буду регулярно проверять csv, но это работа на другой день. – user

+0

Я думаю, что круговой буфер является лучшим/самым надежным подходом здесь. См. Обновление – Reimeus

+0

Это работает очарование. У меня есть один вопрос, где указать номер столбца и номер строки. Я никогда раньше не использовал этот пакет. – user