Java 从文本文件加载
我正在制作一个android应用程序,允许用户将收藏品添加到书架上,每个收藏品的名称保存在名为owned的数组中。我在这里的一些人的帮助下编写了一些代码,应该将我的数组保存到文本文件中 该代码如下所示:Java 从文本文件加载,java,android,Java,Android,我正在制作一个android应用程序,允许用户将收藏品添加到书架上,每个收藏品的名称保存在名为owned的数组中。我在这里的一些人的帮助下编写了一些代码,应该将我的数组保存到文本文件中 该代码如下所示: @Override public void onStop() { try{ super.onStop(); FileOutputStream fOut = openFileOutput("savedVinyls", Context.MODE_PRIVAT
@Override
public void onStop()
{
try{
super.onStop();
FileOutputStream fOut = openFileOutput("savedVinyls", Context.MODE_PRIVATE);
String vinylString="";
OutputStreamWriter osWriter = new OutputStreamWriter(fOut);
for(int i = 0; i < ownedCounter; i++)
{
if(!owned[i].equals(""))
vinylString += owned[i] + " ";
}
fOut.write(vinylString.getBytes());
fOut.close();
}
catch(IOException OE){
OE.getStackTrace();
}
}
我可能读/写文件的方式完全错误,我的目标是让它在用户关闭应用程序时保存其收集字符串,然后在下次加载应用程序时加载
当前,它在尝试加载文本文件时崩溃
任何帮助都将不胜感激 使用ArrayIndexOutOfBoundsException表示您试图访问数组中的无效索引
基本上,您在某个点调用owned[i],其中i不是有效的索引。大于所拥有的大小堆栈跟踪是什么?试着冲水;fOut.close;尝试添加。刷新,但没有更改。问题似乎来自于阅读器;命令这句话每次都会导致应用程序崩溃。进一步检查,splitReader字符串似乎包含一堆垃圾数据。我不确定这是否相关。此外,stacktrace看起来像是在获取一个ArrayIndexOutofBoundsCeptioni只能假设owned也是一个字符串[],类似于splitReader。分配它们不应导致崩溃。另外,拆分似乎是个坏主意,除非它们从不包含空格?indexOutOfBounds将不会来自该行。基本上,你是在某个时候调用owned[i],而我不是一个有效的索引。末日骑士,你是对的。这个问题来自我代码中的另一个地方。我想出来了,把它修好了。谢谢你的帮助!
try{
FileInputStream fileStream;
fileStream = openFileInput("savedVinyls");
byte[] buffer = new byte[1024];
StringBuffer line = new StringBuffer("");
while(fileStream.read(buffer) != -1)
{
line.append(new String(buffer));
}
System.out.println(line);
String readVinyls = line.toString();
String[] splitReader = readVinyls.split(" ");
owned = splitReader;
}
catch(IOException OE)
{
OE.printStackTrace();
}