SUPER CSV schreiben, CSV-bean
Hier ist meine Klasse,
public class FreebasePeopleResults {
public String intendedSearch;
public String weight;
public Double heightMeters;
public Integer age;
public String type;
public String parents;
public String profession;
public String alias;
public String children;
public String siblings;
public String spouse;
public String degree;
public String institution;
public String wikipediaId;
public String guid;
public String id;
public String gender;
public String name;
public String ethnicity;
public String articleText;
public String dob;
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
public Double getHeightMeters() {
return heightMeters;
}
public void setHeightMeters(Double heightMeters) {
this.heightMeters = heightMeters;
}
public String getParents() {
return parents;
}
public void setParents(String parents) {
this.parents = parents;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getProfession() {
return profession;
}
public void setProfession(String profession) {
this.profession = profession;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public String getChildren() {
return children;
}
public void setChildren(String children) {
this.children = children;
}
public String getSpouse() {
return spouse;
}
public void setSpouse(String spouse) {
this.spouse = spouse;
}
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getInstitution() {
return institution;
}
public void setInstitution(String institution) {
this.institution = institution;
}
public String getWikipediaId() {
return wikipediaId;
}
public void setWikipediaId(String wikipediaId) {
this.wikipediaId = wikipediaId;
}
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEthnicity() {
return ethnicity;
}
public void setEthnicity(String ethnicity) {
this.ethnicity = ethnicity;
}
public String getArticleText() {
return articleText;
}
public void setArticleText(String articleText) {
this.articleText = articleText;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getSiblings() {
return siblings;
}
public void setSiblings(String siblings) {
this.siblings = siblings;
}
public String getIntendedSearch() {
return intendedSearch;
}
public void setIntendedSearch(String intendedSearch) {
this.intendedSearch = intendedSearch;
}
}
Hier ist meine CSV-writer-Methode
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import org.supercsv.io.CsvBeanWriter;
import org.supercsv.prefs.CsvPreference;
public class CSVUtils {
public static void writeCSVFromList(ArrayList<FreebasePeopleResults> people, boolean writeHeader) throws IOException{
//String[] header = new String []{"title","acronym","globalId","interfaceId","developer","description","publisher","genre","subGenre","platform","esrb","reviewScore","releaseDate","price","cheatArticleId"};
FileWriter file = new FileWriter("/brian/brian/Documents/people-freebase.csv", true);
//write the partial data
CsvBeanWriter writer = new CsvBeanWriter(file, CsvPreference.EXCEL_PREFERENCE);
for(FreebasePeopleResults person:people){
writer.write(person);
}
writer.close();
//show output
}
}
Bekomme ich immer wieder Fehler bei der Ausgabe. Hier ist der Fehler:
Es gibt keine Inhalte für Sie zu schreiben-Linie 2 Kontext: Zeile: 2 Spalte: 0 Raw-Zeile:
null
Nun, ich weiß, es ist jetzt absolut null, so dass ich verwirrt bin.
- SuperCSV. Sie können es hier finden. Ich bin neu in java, und ich bin ein wenig verwirrt an, warum dieser Fehler Auftritt. supercsv.sourceforge.net
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also es ist schon eine Weile, und Sie haben wahrscheinlich verschoben auf das aus, aber...
Das Problem war eigentlich, dass Sie nicht die Versorgung der header der
write()
Methode, d.h. es sollteLeider ist die API ist ein wenig irreführend, es ist die var-args-notation in der Signatur der
write()
Methode, da Sie es ermöglichtnull
übergeben werden. Die javadoc-klar, dass Sie nicht tun sollten, aber es war kein null-check in der Umsetzung: damit die Ausnahme, die Sie immer waren.Super CSV-2.0.0-beta-1 ist jetzt raus. Es behält sich das var-args in der
write()
Methode, scheitert aber schnell, wenn Sie eine null, so wissen Sie genau, was falsch ist, wenn man eine NullPointerException mit folgendem:Es sind auch viele Fehlerbehebungen und neuen Funktionen (einschließlich Maven-Unterstützung und eine neue Raupen-Erweiterung für die Zuordnung von verschachtelten Eigenschaften und arrays/Collections).
Ich nicht sehen, wo Sie erstellen
ArrayList<FreebasePeopleResults> people
, aber Sie könnten überprüfen, dass es mehr als ein element. Als ein Beispiel von Codierung der Schnittstelle, sollten Sie die VerwendungList<FreebasePeopleResults> people
wie die formalen parameter.Nachtrag: waren Sie in der Lage, diese Code-Beispiel: Schreiben einer Datei mit einem header Arbeit?
Beispiel: Hier ist ein Vereinfachtes Beispiel. Ich denke, Sie müssen nur angeben, die
nameMapping
beim aufrufenwrite()
. Diese Namen bestimmen, welche get-Methoden aufrufen, über die Selbstbeobachtung.Ausgabe der Konsole:
List<type>
, aber das ist tangential zu Ihrem problem. Was Feld in Spalte 0?