我正在制作一个允许用户将收藏品添加到书架的Android应用程序,每个收藏品的名称都保存在名为owned的数组中。我已经编写了一些代码(在这里的一些人的帮助下),应该将我的数组保存到文本文件中。
该代码如下所示:
@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();
}
}
我认为这应该将数组保存到文件中,以便以后可以回读(这部分看起来工作正常,因为加载代码的某些部分可以正常工作)
加载此文件并阅读它的代码如下:
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();
}
我可能会以错误的方式阅读/写入文件,我的目标是让用户关闭应用程序时保存其收集字符串,然后在下次加载应用程序时加载它。
目前,它在尝试加载文本文件时崩溃。
非常感谢任何帮助!
答案 0 :(得分:2)
使用ArrayIndexOutOfBoundsException
表示您正在尝试访问数组中的无效索引。
基本上您在某个时刻调用owned[i]
,其中i
不是有效索引。 (大于拥有的大小)