2015-01-04 3 views
0

나는 말 그대로 올바른 대답을 찾으려고 stackoverflow 통해 보았다 ... 어쩌면 내가 뭔가 잘못하고있다. 내가 처음으로 더 정교한 앱을 만들고 있는데, 이는 아이들을위한 퀴즈 앱입니다. 점수를 highscorestable.txt에 저장하고 나중에 열거 나 업데이트하고 읽는 등의 작업을 원합니다. 다음 게임 등으로 응용 프로그램을 다시 사용하도록 파일을 닫은 후에 파일이 존재해야합니다. http://developer.android.com/guide/topics/data/data-storage.html을 사용하고있었습니다. 파일을 전화 메모리에 저장하고 싶습니다. 나는 다음과 같은 코드를 가지고 :안드로이드에 파일을 (영원히) 저장하고 나중에 데이터를 복원하는 방법은 무엇입니까?

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_high_scores); 
     Intent intent = getIntent(); 
     String userData; 
     scores =(EditText)findViewById(R.id.scores); 

     if(intent.getStringExtra(EndScreen.EXTRA_MESSAGE)!=null) 
     { 
     userData = intent.getStringExtra(EndScreen.EXTRA_MESSAGE); 
     } 
     else 
     { 
     userData=""; 
     } 

     String temp = "";//to widzi przy zaladowaniu 
     String output = ""; 
     String g=""; 

     //FIRST READING not necessary? 
try{ 
      FileInputStream fin = openFileInput("highscorestable.txt"); 

      int c; 
      while((c = fin.read()) != -1){ 
       temp = temp + Character.toString((char)c); 
      } 
      fin.close(); 

     } 
    catch (Exception e) { 
      // e.printStackTrace(); 
    } 
     if(temp.equals(null)) 
     { 
      temp = ""; 
     } 

     //output = userData; //+ temp; 
     FileOutputStream fos;//WRITING 
     try { 
      fos = openFileOutput("highscorestable.txt", Context.MODE_PRIVATE); 
      fos.write(userData.getBytes()); 
      fos.close(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     //READING2 
     try{ 
      FileInputStream fin = openFileInput("highscorestable.txt"); 

      int c; 
      while((c = fin.read()) != -1){ 
       g = g + Character.toString((char)c); 
      } 
      fin.close(); 

      output= output+g; 
      scores.setText(output); 
     } 
     catch (Exception e) { 
     } 

자체가 작동하는 의도, 실제로 모든, 그러나 fileitself은 지속되지 않는 작품. 내 말은, 새로운 게임을 시작할 때 이전 데이터가 복원되지 않는다는 것입니다. 그것을 고치는 방법?

+0

당신이 실행하여 가정을 확인할 수 있습니다 작성되지 않은 파일에을 추가 시도 에뮬레이터의 응용 프로그램을 실행 한 다음 DDMS의 파일 브라우저를 사용하여 저장소를 탐색 할 수 있습니까? 파일이 생성되고 두 번째로 앱을 시작할 때 파일이 있습니까? 그렇다면 아마도 데이터를 복원하는 논리에 실수를 범한 것입니다. – Egor

+0

OutputStream out = null; { out = 새 BufferedOutputStream (새 FileOutputStream ("highscorestable.txt")); } catch (예외 e) { } 기존 파일을 추가 할 수 있기 때문에 BufferedOutputStream을 시도해 보셨습니까? thinkn fileoutputstream은 데이터를 추가하지 않기 때문에 이전 데이터는 존재하지 않습니다. –

+0

답변 해 주셔서 감사합니다. 나는 그것이 여기에서 끝나는 것처럼 outputstream으로 시도 할 것이다 : http://stackoverflow.com/questions/5818406/append-data-in-existing-file-in-android-and-read-it. -> CHECKED, 작동하지 않습니다. 자 와드 제브, 정확히 무슨 뜻이야? @ 에고 - DDMS - 나는 그것을 봐야 해. – user3795517

답변

0

시도해보십시오 sharedPrefrences는 : http://developer.android.com/training/basics/data-storage/shared-preferences.html

그들은 XML과 같은 응용 프로그램에 영구적으로 저장 만 제대로 구성된 경우 응용 프로그램에 읽을 수있다. (텍스트 필요한 경우가 아니라면, 여기에 읽기 :. http://developer.android.com/training/basics/data-storage/files.html이 매니페스트에 권한을 추가해야합니다)

편집 :

+0

나는 그것을 \t으로 바꿨다. { \t \t \t fos = openFileOutput ("highscorestable", Context.MODE_PRIVATE); \t \t \t //fos.write (userData.getBytes()); \t \t \t //fos.close(); \t \t \t OutputStreamWriter out = new OutputStreamWriter (fos); \t out.append ("justSomeStringToCheck"); \t out.close(); – user3795517

+0

sharedPreferences가 작동했습니다! CyberGeek.exe에 감사드립니다 !!! – user3795517

관련 문제