实际上我有一个类ArticleModele,我存储.csv列的内容,但我不知道如何访问与.csv中特定行对应的类的特定实例。这是我的代码:
public static ArticleModele readWithCsvDozerBeanReader() throws Exception {
final CellProcessor[] processors = new CellProcessor[] {
new Optional(),
new Optional(),
new Optional()
};
ICsvDozerBeanReader beanReader = null;
try {
beanReader = new CsvDozerBeanReader(new FileReader(CSV_FILENAME), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
beanReader.getHeader(true); // ignore the header
beanReader.configureBeanMapping(ArticleModele.class, FIELD_MAPPING);
ArticleModele articleModele;
while( (articleModele = beanReader.read(ArticleModele.class, processors)) != null ) {
System.out.println(String.format(" %s", articleModele));}
return articleModele;
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}
}
}
这是班级:
public class ArticleModele {
public String titre;
public String contenu;
public String attachement;
public ArticleModele(){}
public ArticleModele(String titre, String contenu, String attachement){
this.titre=titre;
this.contenu=contenu;
this.attachement=attachement;
}
public String getTitre(){
return titre;
}
public void setTitre(String titre){
this.titre=titre;
}
public String getContenu(){
return contenu;
}
public void setContenu(String contenu){
this.contenu=contenu;
}
public String getAttachement(){
return attachement;
}
public void setAttachement(String attachement){
this.attachement=attachement;
}
public String toString() {
return String.format("ArticleModele [titre=%s, content=%s, attachement=%s]", titre, contenu, attachement);
}
}
答案 0 :(得分:1)
代码返回最后一个结果,因为它覆盖了articleModele
。
ArticleModele articleModele;
while( (articleModele = beanReader.read(ArticleModele.class, processors))
!= null) {
System.out.println(articleModele);
}
return articleModele;
所以收集清单。
public static List<ArticleModele> readWithCsvDozerBeanReader() throws Exception {
List<ArticleModele> articleModele = new ArrayList<>();
ArticleModele articleModele;
while( (articleModele = beanReader.read(ArticleModele.class, processors))
!= null) {
System.out.println(articleModele);
articleModeles.add(articleModele);
}
return articleModeles;
如果这样可行,您可以获得i th 文章。并走过文章:
for (ArticleModele articleModele : articleModeles) { ...
答案 1 :(得分:1)
例如,如果您想按标题获取行,则可以使用以下内容:
public static Map<String, ArticleModele> readWithCsvDozerBeanReader() throws Exception {
final CellProcessor[] processors = new CellProcessor[] {
new Optional(),
new Optional(),
new Optional()
};
Map<String, ArticleModele> map = new HashMap<String,ArticleModele>();
ICsvDozerBeanReader beanReader = null;
try {
beanReader = new CsvDozerBeanReader(new FileReader(CSV_FILENAME), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
beanReader.getHeader(true); // ignore the header
beanReader.configureBeanMapping(ArticleModele.class, FIELD_MAPPING);
ArticleModele articleModele;
while( (articleModele = beanReader.read(ArticleModele.class, processors)) != null ) {
System.out.println(String.format(" %s", articleModele));}
map.put(articleModele .getTitre(),articleModele);
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}
}
}
获取您想要使用的任何文章模型:
map.get("titre");