Я работаю над приложением, в котором перечислены все аудиофайлы из общего внутреннего хранилища и съемной SD-карты.
Теперь, если пользователь хочет удалить определенный файл, он будет удален из общего внутреннего хранилища или со съемной SD-карты.
Проблема, с которой я сталкиваюсь, заключается в том, что file.delete не работает, я использовал mediastore для получения всех аудиофайлов.
Это были пути к аудиофайлам, которые я получил из магазина мультимедиа.
Это из внутреннего общего хранилища.
/storage/emulated/0/Music/Guitar1.mp3
Это со съемной карты micro SD.
/storage/BBF8-A8D3/Guitar1.mp3
После получения этих путей
File deleteFile = new File(s.getFilepath());
boolean delete = deleteFile.delete();
Удаление дает false
, поскольку удаляемый файл не удаляется.
Теперь я попробовал это,
File deleteFile = new File(s.getFilepath());
if(deleteFile.exists()) {
boolean catchdelete = deleteFile.delete();}
Теперь после создания файла по пути, если условие не выполняется, так как удаление Файл не существует.
Итак, почему вновь созданный файл не существует (файл не является каталогом), требует ли он потока ввода файла.
Моя главная проблема - удалить файл из хранилища через приложение.
Это мой метод получения путей к аудиофайлам
public ArrayList<String> getAudiosPath(Activity activity, Context context) {
// Uri uri;
listOfAllAudios = new ArrayList<String>();
Cursor cursor;
final String[] columns = {MediaStore.Audio.Media.DATA, MediaStore.Audio.Media._ID};
final String orderBy = MediaStore.Audio.Media._ID;
//Stores all the audio from the gallery in Cursor
cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy);
//Total number of audios
int count = cursor.getCount();
//Create an array to store path to all the audios
String[] arrPath = new String[count];
for (int i = 0; i < count; i++) {
cursor.moveToPosition(i);
int dataColumnIndex = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);
//Store the path of the audio
arrPath[i] = cursor.getString(dataColumnIndex);
Bitmap b = ((BitmapDrawable) ResourcesCompat.getDrawable(context.getResources(), R.drawable.headphone512, null)).getBitmap();
bitmap.add(b);
Log.i("PATH", arrPath[i]);
listOfAllAudios.add(arrPath[i]);
}
// count_paths=listOfAllAudios.size();
return listOfAllAudios;
}
Теперь я применил Apache Commons IO File Utils
File deleteFile = new File(s.getFilepath());
// boolean delete = deleteFile.delete();
try {
FileUtils.forceDelete(FileUtils.getFile(s.getFilepath()));
}
catch (IOException e) {
e.printStackTrace();
}
Этот файл Apache Commons действительно удаляет файл, но проблема заключается в том, что при повторном открытии приложения я вижу путь к файлу с размером файла 0 КБ.
In Download Nav box
когда я в навигационном ящике, я получаю доступ к TA-1032-> Музыка -> Пусто (файл отсутствует)
(файла нет, что означает, что файл удаляется)
Но в ящике Nav я получаю доступ к Audio-> Unknown -> Music -> Guitar.mp3 (файл присутствует, но размер файла равен 0 и его невозможно воспроизвести)
так вот как получить путь к файлу.