2012-12-04 151 views
5

我一直在尝试将数组写入文件。我知道如何将整数或字符串写入文件,但是使数组混淆了我。我现在使用这个:如何将数组写入文件Java

public static void write (String file, int[]x) throws IOException{ 
    BufferedWriter outputWriter = null; 
    outputWriter = new BufferedWriter(new FileWriter(filename)); 
    outputWriter.write("hi");// Here I know i cant just write x[0] or anything. Do i need 
          //to loop in order to write the array? 
    outputWriter.newLine(); 
    outputWriter.flush(); 
    outputWriter.close(); 



} 
+0

你在必须循环arry打印出每个元素 – NimChimpsky

+6

Atleast google一次... – Parth

+0

你想让结果可以被人类或其他程序读取吗? –

回答

12

像其他人一样,你可以遍历数组并打印出元素之一一个。要使输出显示为数字而不是“字母和符号”,您需要将每个元素转换为字符串。所以,你的代码变得像这样:

public static void write (String filename, int[]x) throws IOException{ 
    BufferedWriter outputWriter = null; 
    outputWriter = new BufferedWriter(new FileWriter(filename)); 
    for (int i = 0; i < x.length; i++) { 
    // Maybe: 
    outputWriter.write(x[i]+""); 
    // Or: 
    outputWriter.write(Integer.toString(x[i]); 
    outputWriter.newLine(); 
    } 
    outputWriter.flush(); 
    outputWriter.close(); 
} 

如果你只想打印出像[1, 2, 3, ....]数组,你可以用这一个内衬更换循环:

outputWriter.write(Arrays.toString(x)); 
+0

哇谢谢这是完美的 – Lock1618

+0

很高兴帮助! – Windle

11

您可以使用ObjectOutputStream类将对象写入基础流。

outputStream = new ObjectOutputStream(new FileOutputStream(filename)); 
outputStream.writeObject(x); 

还要读Object回来就好 -

inputStream = new ObjectInputStream(new FileInputStream(filename)); 
x = (int[])inputStream.readObject() 
+0

Thankyou但是当我使用这个我得到一堆随机数字字母和符号 – Lock1618

+1

@ Lock1618读取对象后面像 - 'new ObjectInputStream(new FileInputStream(filename))。readObject();' –

3

只是遍历数组中的元素。

例:

for(int i=0; numOfElements > i; i++) 
{ 
outputWriter.write(array[i]); 
} 
//finish up down here 
+0

当我使用这个时,我没有输出到文件。 – Lock1618

+0

@ Lock1618你确定numOfElements被设置为你的数组长度吗?或者你的数组甚至是首先填充的? – Max

+0

该数组只是一个参数,我主要填充它。我用for(int i = 0; x.length> i; i ++) outputWriter.write(x [i]); – Lock1618

4

如果没有问题与Apache公地的lib

outputWriter.write(ArrayUtils.join(array, ",")); 
0

如果结果是人们阅读和数组的元素有一个适当的定义toString() .. 。

outputString.write(Arrays.toString(array));