我在提取后得到一个列值为null。以下程序有什么问题?

时间:2016-09-20 20:19:32

标签: opencsv

我为IterableCSVToBean<MessageFileExtractHeader>

选定的列之一获取null

DTO Classe:

public class MessageFileExtractHeader implements Serializable {

    private static final long serialVersionUID = -3052197544136826142L;

    private String mesgid;
    private String mesg_type;

 // getters and setters

主类:

public class FileExtraction {

    public static void main(String[] args) throws IOException, IllegalAccessException, InvocationTargetException, InstantiationException, IntrospectionException, CsvBadConverterException, CsvDataTypeMismatchException, CsvRequiredFieldEmptyException, CsvConstraintViolationException {
        Properties prop = new Properties();
        ExtractFieldUtils efUtils= new ExtractFieldUtils();

        MessageFileExtractHeader msgFilxtractRecord = null;


        try {
              InputStream inputStream =
                      SAADumpFileExtraction.class.getClassLoader().getResourceAsStream("config.properties");
              prop.load(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
            String fileDirectory= prop.getProperty("file.directory");

            //get the filenames
            String mesgfilename= fileDirectory+prop.getProperty("mesg.file.name");


            //get the headers
            String mesgheader= fileDirectory+prop.getProperty("mesg.file.header.fields");


            int msgskiplines=1;


            CSVReader reader = null;
            try {
                reader = new CSVReader(new FileReader(mesgfilename));
                Map<String, String> msgmapping = efUtils.getMapping(mesgheader);
                HeaderColumnNameTranslateMappingStrategy<MessageFileExtractHeader> strategy = new HeaderColumnNameTranslateMappingStrategy<MessageFileExtractHeader>();
                strategy.setType(MessageFileExtractHeader.class);
                strategy.setColumnMapping(msgmapping);
                IterableCSVToBean<MessageFileExtractHeader> msgCTBIterator= new IterableCSVToBean<MessageFileExtractHeader>(reader, strategy, null);
                Iterator<MessageFileExtractHeader> mesgIterator= msgCTBIterator.iterator();
                while(mesgIterator.hasNext()){

                    msgFilxtractRecord = mesgIterator.next();
                    System.out.println(msgFilxtractRecord);


//                  
                }} finally {

                        reader.close();
                    }
                }               
}

输出:

MessageFileExtractHeaders [mesgid=null, mesg_type=081]

请给我一个很好的解决方案来获取mesgid。

1 个答案:

答案 0 :(得分:0)

请发送csv文件的简短示例(标题和一行)以及标题属性的值。

我的猜测是csv标头,属性中的标题或两者都有一个类型,它与DTO(mesgid)中的类型不匹配。因此,它不会被填充。