2011-11-18 3 views
1

Android의 내부 메모리를 사용하여 long 배열을 텍스트 파일로 저장하려고 시도하고 다른 작업으로 해당 배열에 액세스하려고합니다. 깨진 것을 알아 채고 난 후, 나는이 코드 조각에서 문제를 분리했다.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

왜 파일에 longs를 저장 하시겠습니까 ?? 당신은 그 na를위한 다른 메커니즘을 사용할 수 있습니다 !! 같은 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