2015-01-24 9 views
2

안드로이드/데이터 폴더 안의 폴더 생성에 문제가 있습니다. 내 코드는 폴더를 만들고 파일 안의 자산 폴더에서 파일을 복사해야합니다. 난의 OutputStream 객체를 초기화 할 때 나는 FileNotFoundException이를 얻을안드로이드/데이터 안의 폴더를 만들 수 없습니다.

private File getFileForShare(String filename) { 
    try { 
     String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
     File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName()); 
     if (!folder.exists()) { 
      folder.mkdir(); 
     } 
     AssetManager am = context.getAssets(); 
     InputStream inputStream = am.open("audio/" + filename); 

     File f = new File(folder.getAbsolutePath(), filename); 
     OutputStream outputStream = new FileOutputStream(f); 
     byte buffer[] = new byte[1024]; 
     int length = 0; 

     while ((length = inputStream.read(buffer)) > 0) { 
      outputStream.write(buffer, 0, length); 
     } 

     outputStream.close(); 
     inputStream.close(); 

     return f; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

: 이 내 코드입니다. 또한 Android/data 폴더로 이동하면 내 앱 패키지 이름이있는 새 폴더가 만들어지지 않습니다. 매니페스트 내부에 읽기 및 쓰기 저장 권한을 설정했습니다. 뭐가 문제 야?

답변

7

무엇이 잘못 되었나요?

, 기본 장치 소유자에 대한 외부 저장 장치에 Android/data/ 아래에있는 디렉토리를 얻을 수있는 적절한 방법은, 바로 사용 가능한 ContextgetExternalFilesDir()를 호출하는 것입니다. 교체 :와

String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
    File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName()); 

:

확인
File folder = context.getExternalFilesDir(); 
+0

, 그것을 얻었다. 감사 – giozh