годами я разбирал файлы csv во время моих ночных пакетных заданий, используя следующую логику без проблем. Как бы то ни было, я полностью переписываю приложение, и теперь мне интересно, может ли быть какая-то производительность/качество при использовании чего-то вроде opencsv? У меня нет опыта работы с другими библиотеками, так что я надеялся, что кто-то еще с опытом мог бы звонить в.opencsv vs java split comma
while ((line = br.readLine()) != null) {
String[] items = line.split(",");
for (int i = 0; i < items.length; ++i) {
// Remove extra quote
if (items[i].length > 2) {
items[i] = items[i].replaceAll("\"", "");
}
// Replace blank items with nulls
if (items[i].matches("^\\s*$")) {
items[i] = null;
}
}
String item0 = item[0];
String item1 = item[1];
}
Очень хороший момент, двойная цитата определенно уродлива. Я также заметил, что после прочтения api вы можете передать массив переменных String в парсер ssv, а затем просто передать анализируемый объект объекту объекта. Мне очень нравится эта функция, я думаю, что это поможет создать единый динамический парсер. –
Чтение Csv будет «IO Bound», поэтому не так много улучшений во время выполнения. Но ваш текущий подход включает в себя несколько проходов через каждую строку (и использует регулярное выражение); хорошо написанный Csv Parser должен требовать только один проход через каждую строку (и, надеюсь, меньше CPU).Сокращение использования ЦП никогда не повредит. –