【问题标题】:how to write an array to a file Java如何将数组写入文件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();  



}

【问题讨论】:

标签: java arrays file loops bufferedwriter


【解决方案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
            );
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-31
          • 2010-12-18
          • 1970-01-01
          • 2023-03-29
          • 2020-05-10
          • 1970-01-01
          相关资源
          最近更新 更多