Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OpenCSV所有数据都存储在单行版本(5.1)中,数据丢失_Java_Maven_File_Csv_Opencsv - Fatal编程技术网

Java OpenCSV所有数据都存储在单行版本(5.1)中,数据丢失

Java OpenCSV所有数据都存储在单行版本(5.1)中,数据丢失,java,maven,file,csv,opencsv,Java,Maven,File,Csv,Opencsv,Hi使用openCsv保存对象时,数据存储在一行中,如果我尝试添加多个对象,则会删除前一个对象的数据。如果有人知道答案,请在这里回答 public final Logger log=Logger.getLogger("Error"); public void beanToCsvExport(final T object, final String filePath) { if(object == null) { log.warning("Initi

Hi使用openCsv保存对象时,数据存储在一行中,如果我尝试添加多个对象,则会删除前一个对象的数据。如果有人知道答案,请在这里回答

public final Logger log=Logger.getLogger("Error");
    public void beanToCsvExport(final T object, final String filePath) {
        if(object == null) {
            log.warning("Initialization of object failed");
        }else {
            try {
                Writer writer = new FileWriter(filePath);
                StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
                beanToCsv.write(object);
                writer.close();
            } catch (IOException e) {
                System.out.println(e.getMessage());
            } catch (CsvDataTypeMismatchException e) {
                System.out.println(e.getMessage());
            } catch (CsvRequiredFieldEmptyException e) {
                System.out.println(e.getMessage());
            }
        }
    }

当您尝试写入多个对象时,最后一个对象将被覆盖,因为您要传递给
statefleBeantoCSV
的文件写入程序未处于附加模式。您应该在FileWriter构造函数中指定追加模式

Writer writer = new FileWriter(filePath, true);
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(object);
writer.close();
编辑:这将解决多个列标题和列标题不换行的问题。它对我有用

public <T> void beanToCsvExport(final List<T> object, final String filePath) {
    if (object == null) {
        System.out.println("Initialization of object failed");
    } else {
        try {
            cleanFile(filePath);
            FileWriter writer = new FileWriter(filePath, true);
            StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
            beanToCsv.write(object);
            writer.close();
        } catch (IOException | CsvDataTypeMismatchException | CsvRequiredFieldEmptyException e) {
            System.out.println(e.getMessage());
        }
    }
}
要测试功能,请执行以下操作:

public void employeesToCsv() {
    List<Employee> list = Arrays.asList(new Employee("101", "sunny"), new Employee("102", "Andrew"));
    beanToCsvExport(list, "file.csv");
}

它在工作,谢谢你,但它没有切换线路。列标题出现的次数与我添加对象的次数相同。请尝试添加换行符:
writer.write(“\n”)写入对象后。输出:“eId”、“eName”、“101”、“sunny”、“eId”、“eName”、“102”、“Andrew”如果您正在调用
BeantOCV(对象)
,则每次都会为每个对象写入列标题。不是将类型为T的实例传递给
beantocv
而是传递一个
列表
,其中包含所有要编写的对象。我已经复制粘贴了相同的代码,您能告诉我为什么它对我不起作用吗?或者请将文件发送到kandelamanikanta@gmail.com非常感谢你的努力
public void employeesToCsv() {
    List<Employee> list = Arrays.asList(new Employee("101", "sunny"), new Employee("102", "Andrew"));
    beanToCsvExport(list, "file.csv");
}
"eId","eName"
"101","sunny"
"102","Andrew"