1

我尝试将我的数组写入一个文件,但是我得到的不是我的数据,而是两个单元格;一个是 [Ljava.lang.String;@7b1ddcde,另一个是[Lorg.supercsv.cellprocessor.ift.CellProcessor;@658fb1f7我不知道这到底是怎么发生的,因为我的数组实际上是一组非常好的数据,当我将它打印到控制台时就可以工作。

我的表格包含所有标题和必需的单元格,只是这些奇怪的错误占据了前两个单元格,并且没有写入其他数据。

我的 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)

您尝试调用的方法似乎期望 List 作为第一个参数,而不是数组,因此请先将您的数组转换为列表,然后再尝试编写它。就像是;

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 回答