1

配列をファイルに書き込もうとしましたが、データの代わりに2つのセルしか取得できません。1つは [Ljava.lang.String;@7b1ddcde、もう1つは、[Lorg.supercsv.cellprocessor.ift.CellProcessor;@658fb1f7これが実際にどのように発生しているのかわからないことです。私の配列は実際には非常に優れたデータセットであり、コンソールに出力すると機能します。

私のテーブルにはすべてのヘッダーと必要なセルがあります。これらの奇妙なエラーが最初の2つのセルを占め、他のデータは書き込まれません。

私のCellProcessorメソッドはいっぱいなnew Optional(),ので、ここでの問題ではないと思います。これが全体の方法です。申し訳ありませんが、私のコードは急いで作成されたものです。

static String[] writeWithCsvListWriter(String filename) throws Exception {
    ICsvListWriter listWriter = null;
    try {
            listWriter = new CsvListWriter(new FileWriter(Main.filename + ".csv"),
                    CsvPreference.STANDARD_PREFERENCE);

            final CellProcessor[] processors = getProcessors();
            final String[] header = new String[] { "Year", "mm", "Max Temp", "Min Temp",
                    "af days", "Rain", "Sun" };

            listWriter.writeHeader(header);

            FileReader fileReader = new FileReader(filename);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            List<String> lines = new ArrayList<String>();
            String line = null;

            int i = 0;
            while ((line = bufferedReader.readLine()) != null) {
                if(line.startsWith("   2010")){
                    try {
                        String[] splitArray = line.split("\\s+");
                        System.out.println("Writing Array");
                        listWriter.write(splitArray, processors);
                    } catch (PatternSyntaxException ex) {
                    }
                }
                i++;
            }
            bufferedReader.close();
    } finally {
            if( listWriter != null ) {
                    listWriter.close();
            }
    }
    return null;
}
4

1 に答える 1

2

ICsvListWriter APIを見るとwrite(Object... columns)、ではなく、メソッドを取得しているように見えますwrite(List<?> columns, CellProcessor[] processors)

呼び出そうとしているメソッドは、配列ではなくリストを最初の引数として期待しているように見えるので、最初に配列をリストに変換してから、それを書き込もうとします。何かのようなもの;

String[] splitArray = line.split("\\s+");
List list = Arrays.asList(splitArray);
System.out.println("Writing Array");
listWriter.write(list, processors);
于 2013-01-23T21:14:21.050 に答える