java - 使用 Java 编写 CSV 会产生奇怪的错误

标签 java arrays string supercsv

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

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

我的 CellProcessor 方法只是充满了 newOptional(), 所以我不认为这是这里的问题。 这是整个方法。非常抱歉,我的代码很糟糕,是匆忙编写的。

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

最佳答案

查看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);

关于java - 使用 Java 编写 CSV 会产生奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14489362/

相关文章:

java - 试图告诉用户他们在 java 中输入了错误的值

c - 给结构体数组赋值问题?

php - 将一个对象数组与另一个数组进行比较和排序

java - 在嵌套循环后填充数组

php - 检查字符串是否在 PHP 中全部大写

python - 将纪元时间转换为 Pandas 数据框中的格式化日期字符串

Java 方法从 ArrayList 中查找以给定字符串开头的名称变量

java - 如果我想设置数组的大小并且我想在空白处使用空值,我应该使用什么类型的数组

java - Selenium ChromeDriver 给出 "InitializeSandbox() called with multiple threads in process gpu-process"错误

swift - 如何测试一个值是否是Int类型