Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文本文件加载_Java_Android - Fatal编程技术网

Java 从文本文件加载

Java 从文本文件加载,java,android,Java,Android,我正在制作一个android应用程序,允许用户将收藏品添加到书架上,每个收藏品的名称保存在名为owned的数组中。我在这里的一些人的帮助下编写了一些代码,应该将我的数组保存到文本文件中 该代码如下所示: @Override public void onStop() { try{ super.onStop(); FileOutputStream fOut = openFileOutput("savedVinyls", Context.MODE_PRIVAT

我正在制作一个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();

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

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

任何帮助都将不胜感激

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