Как «отключить» обнаружение комментариев при разборе файла с помощью CSVParser / CSVStrategy (Apache Commons) - PullRequest
0 голосов
/ 08 февраля 2012

В программе на Java мне нужно проанализировать файл CSV. Ничего необычного там нет. Я использую реализацию CSVParser от Apache Commons, которая теперь использует CSVStrategy в качестве параметра для определения диалекта CSV.

Дело в том, что мне нужно избавиться от опции поиска комментариев во входном файле. Предполагается, что входной файл не имеет комментариев, и каждый символ (кроме, конечно, ;) следует сохранить и считать значимым. В частности, стандартный символ # не должен быть комментарием.

Вот код, который я использую до сих пор (который вызывает проблемы с #, как и ожидалось):

fRead = new FileReader(someFilePath);
data = new CSVParser(fRead, new CSVStrategy(';', '"', '#')).getAllValues();

Третьим аргументом конструктора CSVStrategy является char, поэтому он не может быть null.

Что-то интересное - это наличие статического символа COMMENTS_DISABLED и метода isCommentingDisabled() в CSVStrategy, но нет установки для чего-то подобного.

Существует конструктор CSVParser, который принимает в качестве параметров только читатель и символ-разделитель, а не CSVStrategy, но он не рекомендуется. Итак, я полагаю, что есть способ добиться аналогичной функциональности с помощью CSVStrategy?

1 Ответ

2 голосов
/ 08 февраля 2012

При быстром взгляде на исходный код кажется, что вы можете использовать конструктор CSVStrategy следующим образом:

data = new CSVParser(fRead, new CSVStrategy(';', '"', CSVStrategy.COMMENTS_DISABLED)).getAllValues();
...