【发布时间】: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<String> MenuArray = new ArrayList<String>(); 而不是二维对象数组,而且解决方案也不完整。我还在Using FileUtils in eclipse 寻求帮助
我收到了类似的错误。
解决方案说使用:
FileUtils.writeLines(new File("input.txt"), array);
但是,我收到 method writeLine(File, Collection<>) 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