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입니다. 코드에이 사용 권한 수정을 어떻게 추가해야합니까?
이'rootDir'은 SD 카드에 항상? – havexz