我尝试将我的数组写入文件,但不是我的数据,我只得到两个单元格;一个是[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;
}
答案 0 :(得分: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);