2016-12-29 4 views
1

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

RowListProcessor rowProcessor = new RowListProcessor(); 

    CsvParserSettings settings = new CsvParserSettings(); 
    settings.setRowProcessor(rowProcessor); 
    settings.setLineSeparatorDetectionEnabled(true); 
    settings.setHeaderExtractionEnabled(true); 
    settings.setSkipEmptyLines(true); 

    CsvParser file1Parser = new CsvParser(settings); 
    CsvParser file2Parser = new CsvParser(settings); 

Нужно ли мне использовать разные CsvParserSettings для парсеров, или есть какой-то другой способ определить rowProcessor сек?

Также как я могу читать файлы по строкам для выполнения операций, которые мне нужны в каждой строке?

ответ

1

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

RowListProcessor anotherRowProcessor = new RowListProcessor(); 
settings.setRowProcessor(anotherRowProcessor); //using the same settings object here 
CsvParser file2Parser = new CsvParser(settings); 

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

CsvParser file1Parser=new CsvParser(settings); 
CsvParser file2Parser=new CsvParser(settings); 

file1Parser.beginParsing(file1); 
file2Parser.beginParsing(file2); 

String[] rowOfParser1; 
String[] rowOfParser2; 

while((rowOfParser1 = file1Parser.parseNext()) != null){ 
    rowOfParser2 = file2Parser.parseNext(); 
    //do whatever you need to do with the rows. 
} 

//only need to call this if you are not reading both inputs entirely 
file1Parser.stopParsing(); 
file2Parser.stopParsing(); 

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^