在Java中将数组保存到文本文件
我试图将在Java中将数组保存到文本文件,java,arrays,io,Java,Arrays,Io,我试图将int数组的值打印到本地文件中。但是,我似乎找不到一种方法来以标准形式(1,2,3)而不是堆地址([I@1befab0) 我的代码片段如下: PrintWriter pr = new PrintWriter("file"); for (int i=0; i<views.length ; i++){ pr.println(Arrays.toString(views)); } pr.close()
int
数组的值打印到本地文件中。但是,我似乎找不到一种方法来以标准形式(1,2,3
)而不是堆地址([I@1befab0
)
我的代码片段如下:
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.toString(views));
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
}
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i数组上的toString()方法给出“[I@1befab0“字符串。
所以你需要在数组上循环
您可以将问题分成两部分:
用于构建字符串(可以在调试中检查值)
用于将字符串写入文件
数组上的toString()方法给出“[I@1befab0“字符串。
所以你需要在数组上循环
您可以将问题分成两部分:
用于构建字符串(可以在调试中检查值)
用于将字符串写入文件
您每次都试图打印整个阵列。请尝试以下操作:
(我做了最小的更改。但是,捕获异常
通常是个坏主意,通常应该在最后
块中关闭编写器。)
试试看
{
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i您每次都试图打印整个数组。请尝试以下操作:
(我做了最小的更改。但是,捕获异常
通常是个坏主意,通常应该在最后
块中关闭编写器。)
试试看
{
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i来说,当您打印出数组时,它调用数组的toString()函数。因此,您看到的是数组中存在的许多值的“视图”数组的参考值
正如Jon指出的,您实际上需要打印数组的值。当然,这假设数组包含通过toString很好地格式化的对象(或者数组包含原语)。打印数组时,它调用数组的toString()函数。因此,您看到的是“视图”的参考值数组中存在尽可能多的值
正如Jon所指出的,您实际上需要打印数组的值。当然,这假设数组包含通过toString很好地格式化的对象(或者数组包含原语).是否写入文件以保留数组内容?如果是,则有一个关于如何反序列化对象的链接,以便您可以在链接页面上检索值。是否写入文件以保留数组内容?如果是,则有一个关于如何反序列化对象的链接,以便您可以在链接页面上检索值数组可能是多维数组吗?如果是,请使用java.util.array.deepToString
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.deepToString(views));
}
pr.close();
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i数组可能是多维数组吗?如果是,请使用java.util.Arrays.deepToString
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.deepToString(views));
}
pr.close();
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i这里的大多数答案都关注这样一个事实:您需要迭代数组,而不是一次性打印所有数组。但是Arrays.toString(…)应该返回与Arrays.asList(…).toString()相同的结果,顺便说一句,它应该是[1,2,3]形式
因此,我建议,正如Matt在回答中所做的那样,视图实际上是一个双嵌套数组
在这种情况下,固定代码为:
try {
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.toString(views[i]));
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
}
试试看{
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;i这里的大多数答案都关注这样一个事实:您需要迭代数组,而不是一次性打印所有数组。但是Arrays.toString(…)应该返回与Arrays.asList(…).toString()相同的结果,顺便说一句,它应该是[1,2,3]形式
因此,我建议,正如Matt在回答中所做的那样,视图实际上是一个双嵌套数组
在这种情况下,固定代码为:
try {
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println(Arrays.toString(views[i]));
}
pr.close();
}
catch (Exception e)
{
e.printStackTrace();
System.out.println("No such file exists.");
}
}
试试看{
PrintWriter pr=新的PrintWriter(“文件”);
对于(int i=0;iPrintWriter pr=new PrintWriter(“文件”);
对于(int i=0;iPrintWriter pr=new PrintWriter(“文件”);
对于(int i=0;i在每次迭代中关闭PrintWriter似乎是一个错误?在每次迭代中关闭PrintWriter似乎是一个错误?
PrintWriter pr = new PrintWriter("file");
for (int i=0; i<views.length ; i++){
pr.println("" + views[i]);
}
pr.close();