如何将数组写入文件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的主要内容,如果未能解决你的问题,请参考以下文章