Я работаю над программой организации файлов мультимедиа для Android и хочу переместить файлы мультимедиа в структуру каталогов, такую как root / Artist / Album / Song.flac.Я перебираю структуру данных, содержащую эту информацию, и создаю папки, используя mkdirs ().Когда я просматриваю созданные папки (используя OI File Manager или File Expert), я могу войти в каталог первого уровня и увидеть имена каталогов второго уровня, но они обозначены как 0-байтовые файлы.Сначала я подумал, что это действительно просто файлы, и попробовал еще раз, но если я просмотрю их в ADB, они будут файлами.Проблемы с разрешениями:
Например, у меня есть мой корень в / mnt / storage / FLAC:
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 / storage / FLAC / Artist_1 и т. Д.) имеют одинаковые разрешения для папок Альбома.
Если я вручную отредактирую разрешения с помощью chmod, установив для обеих папок уровня значение drwxrwxrwx (777), я могу перемещаться по ним и воспроизводить файлы в файловом менеджере.Это можно сделать с помощью chmod + x.
Вот код, который я использую:
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:
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()));
}
У меня естьэта строка в моем файле манифеста:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
На моем устройстве 16 ГБ внутренней памяти ext3.Как мне добавить это исправление разрешений в мой код?