2011-11-18 64 views
1

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

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] 

我预计是从上面的原始数组的结果。我在这里做错了什么?任何帮助或建议,将不胜感激。

+0

你为什么要在一个文件中存放多个?你可以使用其他机制为那个!像sqlite数据库/使一些静态类或使用应用程序类! – vikky

回答

1

替换此:

 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); 

我希望这会帮助你。

+0

非常感谢!这很有帮助。 – Keyawn

相关问题