Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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/video/2.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
将对象[]转换为字符串[]时,iam获取以下代码的java.lang.ArrayStoreException public void createCSV(地图){ String reportPath=“C:/Users/nandini/Desktop/file.csv”; 试一试{ FileWriter FileWriter=新的FileWriter(reportPath); CSVWriter CSVWriter=新的CSVWriter(文件写入程序, CSVWriter.DEFAULT_分隔符, CSVWriter.NO_QUOTE_字符, CSVWriter.DEFAULT\u转义\u字符, CSVWriter.DEFAULT\u LINE\u END); String[]header=map.keySet().toArray(新字符串[map.size()]); Object[]data=map.values().toArray(新对象[map.size()]); String[]stringArray=Arrays.copyOf(data,data.length,String[].class); //向csv添加数据 csvWriter.writeNext(标题); csvWriter.writeNext(stringArray); csvWriter.close(); }捕获(例外e){ 错误(e); } }_Java_Spring Boot_Csv - Fatal编程技术网

将对象[]转换为字符串[]时,iam获取以下代码的java.lang.ArrayStoreException public void createCSV(地图){ String reportPath=“C:/Users/nandini/Desktop/file.csv”; 试一试{ FileWriter FileWriter=新的FileWriter(reportPath); CSVWriter CSVWriter=新的CSVWriter(文件写入程序, CSVWriter.DEFAULT_分隔符, CSVWriter.NO_QUOTE_字符, CSVWriter.DEFAULT\u转义\u字符, CSVWriter.DEFAULT\u LINE\u END); String[]header=map.keySet().toArray(新字符串[map.size()]); Object[]data=map.values().toArray(新对象[map.size()]); String[]stringArray=Arrays.copyOf(data,data.length,String[].class); //向csv添加数据 csvWriter.writeNext(标题); csvWriter.writeNext(stringArray); csvWriter.close(); }捕获(例外e){ 错误(e); } }

将对象[]转换为字符串[]时,iam获取以下代码的java.lang.ArrayStoreException public void createCSV(地图){ String reportPath=“C:/Users/nandini/Desktop/file.csv”; 试一试{ FileWriter FileWriter=新的FileWriter(reportPath); CSVWriter CSVWriter=新的CSVWriter(文件写入程序, CSVWriter.DEFAULT_分隔符, CSVWriter.NO_QUOTE_字符, CSVWriter.DEFAULT\u转义\u字符, CSVWriter.DEFAULT\u LINE\u END); String[]header=map.keySet().toArray(新字符串[map.size()]); Object[]data=map.values().toArray(新对象[map.size()]); String[]stringArray=Arrays.copyOf(data,data.length,String[].class); //向csv添加数据 csvWriter.writeNext(标题); csvWriter.writeNext(stringArray); csvWriter.close(); }捕获(例外e){ 错误(e); } },java,spring-boot,csv,Java,Spring Boot,Csv,发生这种情况的原因如下: public void createCSV(Map<String, Object> map) { String reportPath = "C:/Users/nandini/Desktop/file.csv"; try { FileWriter fileWriter = new FileWriter(reportPath); CSVWriter csvWriter = new CSVWr

发生这种情况的原因如下:

public void createCSV(Map<String, Object> map) {
   String  reportPath =  "C:/Users/nandini/Desktop/file.csv";

    try {
        FileWriter fileWriter = new FileWriter(reportPath);
        CSVWriter csvWriter = new CSVWriter(fileWriter,
                CSVWriter.DEFAULT_SEPARATOR,
                CSVWriter.NO_QUOTE_CHARACTER,
                CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                CSVWriter.DEFAULT_LINE_END);


        String[] header = map.keySet().toArray(new String[map.size()]);
        


        Object[] data = map.values().toArray(new Object[map.size()]);
        String[] stringArray = Arrays.copyOf(data, data.length, String[].class);

        // adding data to csv
        csvWriter.writeNext(header);
        csvWriter.writeNext(stringArray);            
        csvWriter.close();
    } catch (Exception e) {
        logger.error(e);

    }
}
声明如果从原始复制的元素不是可以存储在newType类数组中的运行时类型,则该方法将抛出一个
ArrayStoreException

因此,如果
对象[]
数组包含的元素不是
字符串,则会引发此异常。您可以使用
toString()
方法获取其字符串表示形式,而不是将元素强制转换为
字符串

String[] stringArray = Arrays.copyOf(data, data.length, String[].class);
编辑:

没有溪流

String[] stringArray = Arrays.stream(data)
                             .map(Object::toString)
                             .toArray(size -> new String[size]);
String[]stringArray=新字符串[data.length];
对于(int i=0;i
并非每个值对象都是
字符串
。你不能假设不是这样。您必须测试或使用
String.valueOf()
。您能告诉我如何用java1编写吗。7@nandini只需在
对象[]
数组上执行一个简单的循环,并将每个对象的
toString()
分配给
字符串[]
数组。我建议你试着自己写,这样会更好:)当然,谢谢你会尝试的
String[] stringArray = new String[data.length];
for (int i = 0; i < data.length; i++) {
    stringArray[i] = data[i].toString();
}