-1

我正在制作一个 android 应用程序,允许用户将收藏品添加到架子上,并且每个收藏品的名称都保存在名为 ownd 的数组中。我已经编写了一些代码(在这里的一些人的帮助下)应该将我的数组保存到一个文本文件中。

该代码如下所示:

@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();
    }

我可能会以错误的方式读取/写入文件,我的目标是让它在用户关闭应用程序时保存他们的集合字符串,然后在下次加载应用程序时加载它。

目前,它在尝试加载文本文件时崩溃。

任何帮助将不胜感激!

4

1 回答 1

2

使用ArrayIndexOutOfBoundsException它意味着您正在尝试访问数组中的无效索引。

基本上你owned[i]在某个时候调用, wherei不是一个有效的索引。(大于拥有的大小)

于 2013-08-26T07:57:15.963 回答