我正在研究一个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
,而不是2-D对象数组。同样,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
。任何帮助表示赞赏。
答案 0 :(得分:0)
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();