Создание временных файлов в Андроид



Как лучше всего создать временный файл в Android?



Can .createTempFile использоваться? Документация очень расплывчата об этом.



в частности, неясно, когда временные файлы создаются с помощью File.createTempFile удаляются, если когда-либо.

1113   5  

5 ответов:

Это то, что я обычно делаю:

File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix", "extension", outputDir);

Что касается их удаления, я тоже не совсем уверен. Поскольку я использую это в своей реализации кэша, я вручную удаляю самые старые файлы, пока размер каталога кэша не снизится до моего заданного значения.

лучшие практики внутренние и внешний временные файлы:

Внутренний Кэш

если вы хотите кэшировать некоторые данные, а не хранить их постоянно, вы должны использовать getCacheDir() открыть файл, представляющий внутренний каталог, в котором приложение должно сохранять временный кэш файлы.

когда устройство находится на низком уровне внутреннего пространства для хранения, Android может удалить эти файлы кэша для восстановления пространства. Тем не менее, вы не должны полагаться на система для очистки этих файлов для вас. Вы должны всегда поддерживать кэшируйте файлы самостоятельно и оставайтесь в разумных пределах пространства потребляется, например, 1 МБ. Когда пользователь удаляет приложение, эти файлы удаляются.

Внешний Кэш

чтобы открыть файл, представляющий каталог внешнего хранилища, где вы должны сохранить кэш-файлы, звоните getExternalCacheDir(). Если пользователь деинсталлирует ваше приложение, эти файлы будут автоматически удаленный.

аналогично ContextCompat.getExternalFilesDirs() выше, вы также можете получить доступ к каталогу кэша на вторичном внешнем хранилище (если доступно) по телефону ContextCompat.getExternalCacheDirs().

Совет: Чтобы сохранить файл пространство и поддерживать производительность вашего приложения, это важно тщательно управлять файлами кэша и удалять их это больше не нужно на протяжении всего жизненного цикла вашего приложения.

для временных внутренних файлов их 2 варианта

1.

File file; 
file = File.createTempFile(filename, null, this.getCacheDir());

2.

File file
file = new File(this.getCacheDir(), filename);

оба варианта добавляют файлы в каталог кэша приложений и, таким образом, могут быть очищены, чтобы освободить место по мере необходимости, но Вариант 1 добавит случайное число в конце имени файла, чтобы сохранить файлы уникальными. Он также добавит расширение файла, которое является .tmp по умолчанию, но он может быть установлен на что угодно с помощью 2-го параметра. Использование случайного числа означает несмотря на указание имени файла он не остается таким же, как число добавляется вместе с расширением суффикса/файла (.tmp по умолчанию) например, вы указываете свое имя файла как internal_file и как internal_file1456345.tmp. В то время как вы можете указать расширение вы не можете указать номер, который добавляется. Однако вы можете найти имя файла, которое он генерирует через file.getName();, но вам нужно будет хранить его где-то, чтобы вы могли использовать его всякий раз, когда захотите, например, удалить или прочитать файл. Поэтому по этой причине я предпочтите 2-й вариант, поскольку указанное имя файла-это имя файла, которое создается.

вы можете использовать кэш dir с помощью контексте.getCacheDir().

File temp=File.createTempFile("prefix","suffix",context.getCacheDir());

можно использовать File.deleteOnExit() метод

https://developer.android.com/reference/java/io/File.html#deleteOnExit()

он упоминается здесь https://developer.android.com/reference/java/io/File.html#createTempFile(java.lang.String- Ява.ленг.Строка, java. io. File)

Comments

    Ничего не найдено.