2012-10-10 6 views
2

구성 파일과 로그 파일을 만드는 응용 프로그램이 있습니다. 나는 이것들을 외부 저장 장치에 저장했다. 그러나 내 안드로이드 에뮬레이터에서 그것을 시도 할 때 외부 저장 장치가 쓰기 가능하지 않기 때문에 작동하지 않는다. 이 경우 파일을 어디에 저장해야합니까? 파일이 장치의 내부 스토리지에 저장할 수 너무 큰 수없는 경우안드로이드에 파일을 저장해야하는 곳은 어디입니까?

private void createConfigurationFile(){ 
    File ssConfigDirectory = 
     new File(Environment.getExternalStorageDirectory()+"/MyApp/config/"); 
    File file = new File(ssConfigDirectory, mUsername+".cfg"); 

    if(!file.exists()){ 
     try{ 
      String state = Environment.getExternalStorageState(); 
      if (!Environment.MEDIA_MOUNTED.equals(state)){ 
       ssConfigDirectory = new File("PATH_WHERE_I_SHOULD_STORE_IT"); 
      } 
      File ssLogDirectory = new File(ssConfigDirectory+"/SweetSyncal/log/"); 
      ssLogDirectory.mkdirs();     
      ssConfigDirectory.mkdirs(); 

      File outputFile = new File(ssConfigDirectory, mUsername+".cfg");     
      FileOutputStream fOut = new FileOutputStream(outputFile); 
      OutputStreamWriter osw = new OutputStreamWriter(fOut); 

      writeFile(osw); 
      osw.flush(); 
      osw.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 
+0

외부 저장소에 쓸 수있는 권한이나요 읽을 수 있습니까? –

+0

내 매니페스트에서는 제외하지만 외부 저장소 상태가 MEDIA_MOUNTED가 아니므로 거기에 쓸 수 없습니다. 내 실제 장치에서는 잘 작동합니다. –

답변

3

:

내 코드입니다.

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

로 :

FileOutputStream openFileOutput (String name, int mode)

예 (당신은 그것을 사용하는 Context의 인스턴스를 필요) :

내부 스토리지는 다음과 같은 방법을 사용할 수 있습니다에 액세스하려면 제공 한 코드가 작동하지 않는 이유에 대해서는 두 가지 가능성이 있습니다.

  1. 필요한 권한 (WRITE_EXTERNAL_STORAGE)을 추가하는 것을 잊었습니다.
  2. You''ll 에뮬레이터에 SD 카드가 활성화되어 있지 않습니다. 이클립스를 사용한다고 가정 할 때 AVD 관리자에서 이클립스를 활성화 할 수 있습니다. AVD 인스턴스를 편집하고 해당 필드에 SD 카드의 크기를 입력하면됩니다. SD Card Support이라는 하드웨어 기능을 추가하고 TRUE로 설정해야합니다.

공식 개발자 가이드에는 Android의 저장 용량에 대해 알아야 할 모든 내용이 나와 있습니다.

당신은 HERE

관련 문제