Для временных внутренних файлов у них есть 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();
, но вам нужно будет его хранить где-нибудь, чтобы вы могли использовать его, когда захотите, например, удалить или прочитать файл. Поэтому по этой причине я предпочитаю второй вариант, так как имя файла, которое вы указываете, является созданным именем файла.
Одним из подходов было бы использование регулярного выражения для сопоставления отдельных слов, а затем передача обратного вызова в re.sub()
для замены на xxxx
, если слово отсутствует в списке.
import re
txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac massa arcu.'
keep = ['amet', 'ac']
print(re.sub(r'\b\w+\b', lambda w: w.group() if w.group() in keep else 'xxxx', txt))