2015-10-08 3 views
0

У меня есть реализация ниже.Supercsv - исключить метод исключения

csvReader = new CsvBeanReader(new InputStreamReader(stream), CsvPreference.STANDARD_PREFERENCE); 
lastReadIdentity = (T) csvReader.read(Packages.class, Packages.COLS); 

В моем Packages.class

Я поставил свое unitcount переменного.

public String getUnitCount() { 
    return unitCount; 
} 
public void setUnitCount(String unitCount) { 
    this.unitCount = unitCount; 
} 

Это прекрасно работает, когда он берется в виде строки, но когда принимается как целое, он бросает исключение ниже. Пожалуйста, помогите

private int unitCount; 
public int getUnitCount() { 
    return unitCount; 
} 
public void setUnitCount(int unitCount) { 
    this.unitCount = unitCount; 
} 

Исключение:

org.supercsv.exception.SuperCsvReflectionException: unable to find method setUnitCount(java.lang.String) in class com.directv.sms.data.SubscriberPackages - check that the corresponding nameMapping element matches the field name in the bean, and the cell processor returns a type compatible with the field 
context=null 
at org.supercsv.util.ReflectionUtils.findSetter(ReflectionUtils.java:139) 
at org.supercsv.util.MethodCache.getSetMethod(MethodCache.java:95) 

ответ

0

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

Просто аннотировать класс:

public class SubscriberPackages { 

    @Parsed(defaultNullRead = "0") // if the file contains nulls, then they will be converted to 0. 
    private int unitCount; // The attribute name will be matched against the column header in the file automatically. 
} 

Для разбора CSV в бобах:

// BeanListProcessor converts each parsed row to an instance of a given class, then stores each instance into a list. 
BeanListProcessor<SubscriberPackages> rowProcessor = new BeanListProcessor<SubscriberPackages>(SubscriberPackages.class); 

CsvParserSettings parserSettings = new CsvParserSettings(); //many options here, check the tutorial. 
parserSettings.setRowProcessor(rowProcessor); //uses the bean processor to handle your input rows 
parserSettings.setHeaderExtractionEnabled(true); // extracts header names from the input file. 

CsvParser parser = new CsvParser(parserSettings); //creates a parser with your settings. 
parser.parse(new FileReader(new File("/path/to/file.csv"))); //all rows parsed here go straight to the bean processor 

// The BeanListProcessor provides a list of objects extracted from the input. 
List<SubscriberPackages> beans = rowProcessor.getBeans(); 

Раскрытие информации: Я являюсь автором этой библиотеки. Это бесплатно и бесплатно (лицензия Apache V2.0).

+0

Я использую univocity-parsers-1.5.6, и мне сложно избежать последней строки при чтении/анализе файла. Можете ли вы, пожалуйста, помочь, как я могу игнорировать/убирать последнюю строку во время чтения/разбора файла? – Maverick

+0

Как просто игнорировать последнюю разборную строку? –

+0

Спасибо за ваш ответ. После проверки его содержимого я удалил последнюю строку из списка. Но я искал какой-нибудь лучший метод, например, пропускать «n» линии от начала/конца. Или, если комментарий может использоваться, и его тип данных можно изменить с символа на строку, чтобы он мог вместить как символ, так и строку. – Maverick

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

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