从文本文件加载

时间:2013-08-25 21:27:32

标签: java android

我正在制作一个允许用户将收藏品添加到书架的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();
    }

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

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

使用ArrayIndexOutOfBoundsException表示您正在尝试访问数组中的无效索引。

基本上您在某个时刻调用owned[i],其中i不是有效索引。 (大于拥有的大小)