如何将数组写入文件Java

Posted

技术标签:

【中文标题】如何将数组写入文件Java【英文标题】:how to write an array to a file Java 【发布时间】:2012-11-22 08:00:45 【问题描述】:

我一直在尝试将数组写入文件。我知道如何将整数或字符串写入文件,但带上数组让我感到困惑。我现在正在使用这个:

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();  




【问题讨论】:

你必须循环打印出每个元素 您希望结果是人类还是其他程序可以读取? Simplest way to print an array in Java 的可能重复项 【参考方案1】:

您可以使用ObjectOutputStream 类将对象写入底层流。

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

然后阅读Object 回喜欢-

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

【讨论】:

谢谢你,但是当我使用这个时,我得到一堆随机数字字母和符号 @Lock1618 读取对象,如 - new ObjectInputStream(new FileInputStream(filename)).readObject();【参考方案2】:

只需遍历数组中的元素即可。

例如:

for(int i=0; numOfElements > i; i++)

outputWriter.write(array[i]);

//finish up down here

【讨论】:

当我使用它时,我没有输出到文件。 @Lock1618 您确定将 numOfElements 设置为数组的长度吗?或者你的数组一开始就被填充了? 数组只是一个参数,我将它填充到 main.xml 中。我用 for(int i=0; x.length > i; i++) outputWriter.write(x[i]); 它没有理由不工作。设置几个断点并从那里检查。 是的,我不确定它只是创建一个新文件,但不显示任何内容【参考方案3】:

如果你对 Apache commons lib 没问题

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

【讨论】:

【参考方案4】:

如果结果是供人类阅读的并且数组的元素具有正确的toString() 定义...

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

【讨论】:

【参考方案5】:

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

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));

【讨论】:

【参考方案6】:
private static void saveArrayToFile(String fileName, int[] array) throws IOException 
    Files.write( // write to file
        Paths.get(fileName), // get path from file
        Collections.singleton(Arrays.toString(array)), // transform array to collection using singleton
        Charset.forName("UTF-8") // formatting
    );

【讨论】:

以上是关于如何将数组写入文件Java的主要内容,如果未能解决你的问题,请参考以下文章

java如何将一个InputStream写入文件?

java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取

怎样吧Java创建的文件里的数据写入到数组里,

java 怎么将数据写入TXT文件

如何将map写入文件

在Java中将字节[]写入文件[关闭]