настоящее время я использую следующий код, чтобы создать вложенную в MicroSD на леденец с помощью SAFКак эффективно создавать подпапки с использованием Storage Access Framework?
String[] folders = fullFolderName.replaceFirst(UriFolder + "/", "").split("/");
//fullFolderName is a String which represents full path folder to be created
//Here fullFolderName = /storage/MicroSD/MyPictures/Wallpapers
///storage/MicroSD/MyPictures/ already exists
//Wallpapers is the folder to be created
//UriFolder is String and contains /storage/MicroSD
//folders[] will have folders[0]="MyPictures" folders[1]="Wallpapers"
DocumentFile Directory = DocumentFile.fromTreeUri(context, Uri.parse(treeUri));
//treeUri is the uri pointing to /storage/MicroSD
//treeUri is a Uri converted to String and Stored so it needs to parsed back to Uri
DocumentFile tempDirectory = Directory;
//below loop will iterate and find the MyPictures or the parent
//directory under which new folder needs to be created
for(int i=0; i < folders.length-1; i++)
{
for(DocumentFile dir : Directory.listFiles())
{
if(dir.getName() != null && dir.isDirectory())
{
if (dir.getName().equals(folders[i]))
{
tempDirectory = dir;
break;
}
}
}
Directory = tempDirectory;
}
Directory.createDirectory(folders[folders.length-1]);
Приведенный выше код работает отлично и создает подкаталог, но это занимает ~ 5 секунд, чтобы создать папку. Я новичок в SAF, так это единственный способ найти подкаталоги или есть ли другой эффективный способ создания подкаталогов?
На внутренней памяти я буду использовать
new File(fullFolderName).mkdir();
который создаст папку в доли секунды.
'// treeUri - это uri, указывающий на/storage/MicroSD'. Это больше похоже на String. Как вы могли бы разобрать uri в заявлении над ним? – greenapps
Снимите второй цикл. Вы можете удалить весь код из тела первого цикла for. Затем поместите 'Directory.createDirectory (папки [i]);' в нем. Удалите последнее утверждение, как оно теперь находится в цикле. Удалите «-1» из итератора. – greenapps
Хм, я верю, что понял, что ты ошибаешься. Вы хотите своего рода mkdirs()? А есть только mkdir()? Значит, вам нужно реализовать mkdirs() самостоятельно? Пожалуйста, переформатируйте свой блок кода, поэтому нам не нужно прокручивать каждый раз вправо, чтобы видеть пути. – greenapps