0

私はいくつかの人気のあるCSVからJavaへのデシリアライザー(OpenCSV、JSefa、およびSmooks)を試しましたが、ファイルを正しく読み取るものはありませんでした。

First Name,Last Name
エリック,山中
花子,鈴木
一郎,鈴木
裕子,田中
政治,山村

私のJavaオブジェクトコレクションに。

OpenCsvコード:

    HeaderColumnNameTranslateMappingStrategy<Contact> strat = new HeaderColumnNameTranslateMappingStrategy<Contact>();
    strat.setType(Contact.class);
    strat.setColumnMapping(colNameTranslateMap);
    InputStreamReader fileReader=null;
    CsvToBean<Contact> csv = new CsvToBean<Contact>();
    fileReader = new InputStreamReader(new FileInputStream(file), "UTF-8");

    contacts = csv.parse(strat, new CSVReader(fileReader));

FileInputStreamを作成するときに、文字セットをUTF-8、UTF-16、およびISO-8859-1に設定しようとしましたが、コレクションが正しく入力されません。デバッガーとSystem.outに見られるように、フィールドにはガベージが含まれており、多くの場合、レコードの数が間違っています。

4

1 に答える 1

4
  1. FileInputStreammp3やPNGなどのバイナリデータのストリームを読み取るためのものです。の代わりに、文字のストリームを読み取るためFISにを使用します。FileReader
  2. 率直に言って、機能しなかった場合に使用しようとした文字セットを誰が気にしますか?CSVファイルが実際に使用しているエンコーディングを把握し、ファイルを読み取るときにそのエンコーディングを設定する必要があります。を使用するときにエンコーディングを指定するにはFileReader

このクラスのコンストラクターは、デフォルトの文字エンコードとデフォルトのバイトバッファーサイズが適切であると想定しています。これらの値を自分で指定するには、FileInputStreamでInputStreamReaderを作成します。

于 2011-11-03T23:52:29.167 に答える