2011-12-04 6 views
3

Android 용 미디어 파일 조직 프로그램에서 작업 중이며 미디어 파일을 root/Artist/Album/Song과 같은 디렉토리 구조로 이동하려고합니다. flac. 이 정보를 포함하는 데이터 구조를 반복하고 mkdirs()를 사용하여 폴더를 만듭니다. OI 파일 관리자 또는 파일 전문가를 사용하여 만든 폴더를 탐색 할 때 첫 번째 수준의 디렉터리를 입력하고 두 번째 수준 디렉터리의 이름을 볼 수 있지만 0 바이트 파일로 표시됩니다. 처음에는 파일이 실제로 파일 일 뿐이라고 생각했지만 ADB에서 파일을 탐색하면 파일입니다. 권한 문제입니다Android mkdirs()가 잘못된 권한을 설정하고 다른 앱을 폴더에서 잠급니다.

ls -l 
drwxrw-rw- 4 app_63 app_63 16 Dec 3 20:42 Artist_1 
drwxrw-rw- 3 app_63 app_63 16 Dec 3 20:42 Artist_2 
... 

두 번째 레벨 디렉토리를 (을/mnt/저장/FLAC/Artist_1 등) 같은있다 : 예를 들어

, 난을/mnt/저장/FLAC 나의 뿌리를 가지고 앨범 폴더에 대한 사용 권한.

chmod를 사용하여 권한을 수동으로 편집하고 두 수준 폴더를 drwxrwxrwx (777)로 설정하면 파일 관리자에서 해당 파일로 이동하여 파일을 재생할 수 있습니다. 이것은 chmod + x로 할 수 있습니다.

public static boolean moveFile(String sourcefile, String dest) 
{ 
    File file = new File(sourcefile); 
    File dir = new File(dest); 
    return file.renameTo(new File(dir, file.getName())); 
} 

내 매니페스트 파일에이 라인을 가지고 :

public void organizeFiles(String rootDir, ArrayList<libraryElementArtist> libraryData) 
{ 
    for(int i = 0; i < libraryData.size(); i++) 
    { 
     //create artist folder 
     //{ 
     // (new File(rootDir + File.separator + libraryData.get(i).name)).mkdirs(); 
     //} 
     for(int j = 0; j < libraryData.get(i).albums.size(); j++) 
     { 
      //create album folder 
      (new File(rootDir + File.separator + libraryData.get(i).name + File.separator + libraryData.get(i).albums.get(j).name + File.separator)).mkdirs(); 
      for(int k = 0; k < libraryData.get(i).albums.get(j).songs.size(); k++) 
      { 
       //move song into folder 
       FileOperations.moveFile(libraryData.get(i).albums.get(j).songs.get(k).filename, rootDir + "/" + libraryData.get(i).name + "/" + libraryData.get(i).albums.get(j).name); 
      } 
     } 
    } 
} 

이가있는 MoveFile 기능은 다음과 같습니다

내가 사용하고 코드입니다

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

저장 장치가 내 장치에서 16GB 내부 ext3입니다. 코드에이 사용 권한 수정을 어떻게 추가해야합니까?

+0

이'rootDir'은 SD 카드에 항상? – havexz

답변

0

당신은 당신의 앱 매니페스트에 다음과 같은 권한을 필요

android.permission.WRITE_EXTERNAL_STORAGE 

참조 :

Storage

+0

죄송합니다. 이미 Manifest 파일에이 내용이 포함되어 있지만 서식이 내 질문에 숨겨져 있습니다. 내 질문을 편집했습니다. 문제는 그것이 디렉토리를 만들 수 없다는 것이 아니라, 잘못된 권한으로 디렉토리를 만든다는 것입니다. 디렉토리는 잘 만들어졌으며 루트 셸에는 모든 것이 완벽하게 적용되었습니다. 다른 응용 프로그램에서는 사용 권한이 없습니다. – CalcProgrammer1

관련 문제