【问题标题】:Export 2-D object array (Object[][] array) into a .csv file in Java将二维对象数组(Object[][] 数组)导出到 Java 中的 .csv 文件中
【发布时间】:2015-11-30 22:54:42
【问题描述】:

我正在开发一个 java 项目并使用 Eclipse 和 JDK 1.7。我有对象类型的二维数组Object[][] array。我希望将数组的内容(导出)存储到磁盘上的 csv 文件(每行的每个值在单独的列中)。这是我正在尝试的代码:

FileOutputStream fos = new FileOutputStream("newFile.csv");
            ObjectOutputStream oos = new ObjectOutputStream(fos);  
            for(int i=0;i<array.length;i++)
            {
                for(int j=0;j<array[0].length;j++)
                {
                   oos.writeObject(array); 
                   oos.writeObject(",");
                   }
            }
            oos.close();

文件newFile.csv中存储的输出如下:

¬íur[[Ljava.lang.Object;¿ûSäkÛÊxpur[Ljava.lang.Object;ÎXŸs)lxpt1t1tClosedt100.00000000t   
0.00000000uq~t2t1tClosedt200.00000000t100.00000000uq~t3t1tClosedt100.00000000t50.00000000t   q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~q~

这是一些垃圾值。我需要帮助找出这个程序中的问题(如何在存储之前将对象转换为字符串,这就是我猜测的错误),以及如何解决问题。

我在http://www.tutorialspoint.com/java/io/objectinputstream_readobject.htm 上找到了帮助,但它处理的是byte[]String,而不是二维对象数组。同样,http://www.mkyong.com/java/how-to-write-to-file-in-java-fileoutputstream-example/ 仅处理 byte[]。我还在Java - How to write ArrayList Objects into txt file? 找到了一个解决方案,其中使用ArrayList&lt;String&gt; MenuArray = new ArrayList&lt;String&gt;(); 而不是二维对象数组,而且解决方案也不完整。我还在Using FileUtils in eclipse 寻求帮助 我收到了类似的错误。 解决方案说使用:

FileUtils.writeLines(new File("input.txt"), array);

但是,我收到 method writeLine(File, Collection&lt;&gt;) is not applicable for WriteLine(File, Object[][]) 的错误消息。 在 ADO.NET 中还存在一个解决方案,用于读取 csv 文件并将数据存储在 Reading a csv file and storing the data in a 2-D object array 的二维数组中,但我需要另一种方式,并且还需要不适用于 Java 的解决方案。

我使用的两种方法都不起作用。请注意我的二维数组是Object 类型而不是String。任何帮助表示赞赏。

【问题讨论】:

    标签: java


    【解决方案1】:
            FileOutputStream fos = new FileOutputStream("newFile.csv");
            ObjectOutputStream oos = new ObjectOutputStream(fos);  
            for(int i=0;i<array.length;i++)
            {
                for(int j=0;j<array[i].length;j++)
                {
                   oos.writeObject(array[i][j]); 
                   if ( j < array[i].length -1 )
                   {
                       oos.writeObject(",");
                   } 
                   else 
                   {
                       oos.wrinteObject("\n");
                   }
                 }
            }
            oos.close();
    

    【讨论】:

      猜你喜欢
      • 2020-02-02
      • 2018-03-06
      • 2014-02-28
      • 2013-02-28
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      相关资源
      最近更新 更多