Java Android应用程序内部数据存储

Java Android应用程序内部数据存储,java,android,arrays,file-io,storage,Java,Android,Arrays,File Io,Storage,我正在尝试使用Android的内部内存将long数组保存为文本文件,然后在不同的活动中访问该数组。在注意到这一点后,我在下面的这段代码中隔离了问题 long[] timings = {200, 400, 600, 1400}; try { FileOutputStream fos = openFileOutput("timings", Context.MODE_PRIVATE); OutputStreamWriter osw = new OutputStreamWriter(fo

我正在尝试使用Android的内部内存将long数组保存为文本文件,然后在不同的活动中访问该数组。在注意到这一点后,我在下面的这段代码中隔离了问题

long[] timings = {200, 400, 600, 1400};
try {
    FileOutputStream fos = openFileOutput("timings", Context.MODE_PRIVATE);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    osw.write(Arrays.toString(timings));        
    osw.close();

    FileInputStream fis = openFileInput("timings");
    InputStreamReader isReader = new InputStreamReader(fis);
    char[] buffer = new char[timings.length];
    isReader.read(buffer);

    textField.setText(Arrays.toString(buffer));

    fis.close();
} catch (IOException e1) {
    e1.printStackTrace();
}
设置为显示从文件读取内容的文本字段具有以下结果:

[[,2,0,0]
我期望的结果是上面的原始数组。我做错了什么?如有任何帮助或建议,将不胜感激。

替换此:

        InputStreamReader isReader = new InputStreamReader(fis);
        char[] buffer = new char[timings.length];
        isReader.read(buffer);

        textField.setText(Arrays.toString(buffer));
为此:

        DataInputStream in = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String sTemp1 = "", sTemp2 = "";
        while ((sTemp1 = br.readLine()) != null) {
            sTemp2 = sTemp1;
        }
        in.close();

        textField.setText(sTemp2);
我希望它能帮助您。

替换此:

        InputStreamReader isReader = new InputStreamReader(fis);
        char[] buffer = new char[timings.length];
        isReader.read(buffer);

        textField.setText(Arrays.toString(buffer));
为此:

        DataInputStream in = new DataInputStream(fis);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String sTemp1 = "", sTemp2 = "";
        while ((sTemp1 = br.readLine()) != null) {
            sTemp2 = sTemp1;
        }
        in.close();

        textField.setText(sTemp2);

我希望它能帮助您。

为什么要将long存储在文件中??您可以使用其他机制来实现该na!!喜欢sqlite数据库/创建一些静态类或使用应用程序类!!为什么要在文件中存储long??您可以使用其他机制来实现该na!!喜欢sqlite数据库/创建一些静态类或使用应用程序类!!非常感谢你!这很有帮助,非常感谢!这很有帮助。