Как удалить файл внутреннего хранилища в 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.
}
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()