Допустимо ли оставлять файлы во временной папке пользователя?

Я работаю над приложением, которое генерирует набор растровых изображений, а затем загружает их в форму, из которой пользователь может выбирать.

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

Итак, мне интересно, можно ли оставить мои растровые изображения во временной папке пользователя «навсегда» и восстановить их, если их нет в папке? Я не могу ожидать, что смогу хранить изображения в каталоге приложения из-за возможных проблем с разрешениями, и, как я уже сказал, я не могу предварительно заполнить файлы, поскольку пользователь может добавить больше.


person Jon Fournier    schedule 23.05.2012    source источник
comment
Это субъективный вопрос (открытый для обсуждения, без реального однозначного ответа), и он действительно не подходит для формата SO. (В FAQ специально упоминаются открытые вопросы как неуместные здесь.) Извините, но голосование за закрытие как неконструктивное. (И просто чтобы указать, почему, я полностью не согласен с ответом @Jirka; папка temp предназначена именно для этого - временных файлов, которые следует очистить, как только вы закончите их использовать. :)   -  person Ken White    schedule 24.05.2012
comment
Я несколько не согласен с мистером Уайтом и мистером Ханикой. :) .Почему они должны идти в файловой системе был бы мой вопрос?   -  person Tony Hopkinson    schedule 24.05.2012
comment
Мне действительно удалось сохранить растровые изображения.   -  person Jon Fournier    schedule 25.05.2012
comment
@TonyHopkinson - я в чем-то с вами согласен :-) Я отредактирую свой ответ, чтобы сделать его более очевидным.   -  person Jirka Hanika    schedule 01.06.2012
comment
@JirkaHanika Сегодня пришлось зайти в мою временную папку, 15 000 файлов, 70 мегабайт. Мы все должны быть лучшими гражданами.   -  person Tony Hopkinson    schedule 02.06.2012


Ответы (1)


В идеале вы должны генерировать любые временные данные в ОЗУ, а не в файловую систему.

Можно полагаться на временные файлы, если вы можете быть уверены, что ваше приложение хранит только ограниченное количество таких файлов для каждого пользователя. Любые временные файлы могут быть оставлены при неожиданных сбоях/отключениях питания независимо от того, что делает ваш код. Поэтому вам необходимо реализовать механизм, который будет удалять любые устаревшие файлы, созданные тем же приложением в предыдущем сеансе — предположительно, во время его следующего запуска.

Предполагая такой механизм безопасности, преднамеренное оставление временных файлов после выхода из приложения звучит как нестандартный, но разумный «кеш».

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

person Jirka Hanika    schedule 23.05.2012