Как удалить файл внутреннего хранилища в Android?

Я использовал внутреннее хранилище Android, чтобы сохранить файл для своего приложения (используя openFileOutput) но я хотел бы удалить этот файл, это возможно и как?

7 ответов

Решение
File dir = getFilesDir();
File file = new File(dir, "my_filename");
boolean deleted = file.delete();

Я знаю, что это немного старомодно, но документы говорят, чтобы использовать:

deleteFile("filename");

скорее, чем:

File.delete();

Который, если вы уже используете:

getFilesDir();

вроде имеет смысл.

Вы должны всегда удалять файлы, которые вам больше не нужны. Самый простой способ удалить файл - это вызвать ссылку на открытый файл delete() на себя.

myFile.delete();

Если файл сохранен во внутреннем хранилище, вы также можете попросить Контекст найти и удалить файл, вызвав deleteFile():

myContext.deleteFile(fileName);

Примечание. Когда пользователь удаляет ваше приложение, система Android удаляет следующее: Все файлы, которые вы сохранили во внутреннем хранилище. Все файлы, которые вы сохранили во внешнем хранилище, используя getExternalFilesDir(), Однако вы должны вручную удалить все кэшированные файлы, созданные с getCacheDir() регулярно, а также регулярно удаляйте другие файлы, которые вам больше не нужны.

Источник: http://developer.android.com/training/basics/data-storage/files.html

Если вы хотите удалить все файлы из папки, используйте следующую функцию:

private void deleteTempFolder(String dir) {
        File myDir = new File(Environment.getExternalStorageDirectory() + "/"+dir);
        if (myDir.isDirectory()) {
            String[] children = myDir.list();
            for (int i = 0; i < children.length; i++) {
                new File(myDir, children[i]).delete();
            }
        }
    }

Папка должна присутствовать на хранилище. Если нет, мы можем проверить еще одну кодировку.

  if (myDir.exists() && myDir.isDirectory()) {
//write same defination for it.
}
new File(mUri.toString).delete(); 
 void clearMyFiles() {
    File[] files = context.getFilesDir().listFiles();
    if(files != null)
        for(File file : files) {
           file.delete();
        }
 }

Еще одна альтернатива в Котлине

val file: File = context.getFileStreamPath("file_name")
val deleted: Boolean = file.delete()

Использование delete метод файла

Другие вопросы по тегам