質問

ここに私のクラスである、

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;
}

}

ここに私のCSVライターの方法がある。

 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
    }           
}

私は、出力エラーを得続けます。ここではエラーは以下のとおりです。 ライン2コンテキストの書き込みへのコンテンツがありません:ライン:2カラム:0生ライン: ヌル

私は混乱していますので、

さて、私は、それが今では全くヌルであることを知っています。

役に立ちましたか?

解決

だから、しばらくしている、とあなたはおそらくここから上に移動しましたが、...

問題は、実際にはwrite()方法にヘッダを供給していなかったということであった、すなわち、それがあるべきである

writer.write(person, header);
それはwrite()を渡すことを可能にするよう残念ながらAPIは、nullメソッドのシグネチャでVAR-argsを表記のそれの使用に誤解を招く少しある。javadocは明確にあなたがこれを行うべきではないと述べているが、そこ実装には、ヌル・チェックはなかった:あなたがなっていたので、例外

/**
 * Write an object
 * 
 * @param source
 *            at object (bean instance) whose values to extract
 * @param nameMapping
 *            defines the fields of the class that must be written. 
 *            null values are not allowed
 * @since 1.0
 */
public void write(Object source, String... nameMapping) throws IOException,
    SuperCSVReflectionException;

スーパーCSV 2.0.0ベータ-1 のが今出ています。あなたは、次の持つ、NullPointerExceptionを得るときあなたは間違っている内容を正確に把握してそれは、write()方法でVAR-引数を保持していますが、ヌルを提供する場合、高速失敗します:

  フィールドからマップするために使われているとして、

nameMapping配列がnullにすることはできません   列

また、多くのバグ修正と(Mavenのサポート、ネストされたプロパティと配列/コレクションをマッピングするための新しいドーザ拡張子を含む)の新機能が含まれています。

他のヒント

あなたがArrayList<FreebasePeopleResults> peopleを作成する。ここで、私は表示されませんが、あなたはそれが複数の要素を持っていることを確認することがあります。 インターフェイスに符号化の一例としての、仮パラメータとしてList<FreebasePeopleResults> peopleを使用することを検討します。

補遺:ヘッダーを使用してファイルを書く:あなたは、これは のコード例作ることができましたの仕事?

例:ここでは簡単な例です。私はあなただけnameMapping呼び出しwrite()あなたを指定する必要があると思います。これらの名前は、イントロスペクションを通じて呼び出しにメソッドを取得するかを決定ます。

コンソール出力:

name,age
Alpha,1
Beta,2
Gamma,3

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import org.supercsv.io.CsvBeanWriter;
import org.supercsv.io.ICsvBeanWriter;
import org.supercsv.prefs.CsvPreference;

public class Main {

    private static final List<Person> people = new ArrayList<Person>();

    public static void main(String[] args) throws IOException {
        people.add(new Person("Alpha", 1));
        people.add(new Person("Beta", 2));
        people.add(new Person("Gamma", 3));
        ICsvBeanWriter writer = new CsvBeanWriter(
            new PrintWriter(System.out), CsvPreference.STANDARD_PREFERENCE);
        try {
            final String[] nameMapping = new String[]{"name", "age"};
            writer.writeHeader(nameMapping);
            for (Person p : people) {
                writer.write(p, nameMapping);
            }
        } finally {
            writer.close();
        }
    }
}

public class Person {

    String name;
    Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
CellProcessor[] processors = new CellProcessor[] { new Optional(), new NotNull(),
                new Optional(), new Optional(), new NotNull(), new Optional()};

CsvBeanWriter writer = new CsvBeanWriter(file, CsvPreference.EXCEL_PREFERENCE)

writer.write(data,properties,processors);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top