Привет! Я использую много временных файлов в Java, и моя проблема в том, что они не удаляются.
Без необходимости реализовывать свою собственную обработку временного управления файлами (не сложно, я даю вам, но я ленивый плюс со многими вещами, которые можно сделать, если я смогу сэкономить, изобретая колесо для этого, тем лучше), есть ли способ обеспечить временные файлы на диске будут удаляться довольно регулярно.
1 - используя File tmp = File.createTempFile (), конечно, я могу сказать tmp.deleteOnExit (), но если вещь запускается в службе, то единственный выход - это когда происходит сбой (случается редко) или когда сбой системы (например, когда диск полностью заполнен временными файлами и опрокидывает кластер ... упс!)
В идеале, созданные экземпляры собираются в некоторый момент сборщиком мусора, и, поскольку в приложении МНОГО времени простоя, было бы просто здорово, если бы GC мог, ну, закончить его очистку и фактически удалить файл на диске, а также при разыменовании экземпляра из памяти.
единственный способ, который я пока вижу, - это перегрузить класс File и добавить завершенный метод ... Если я сделаю это, то вполне может пойти и с моим собственным менеджером временных файлов!
Короче говоря, могу ли я использовать сборщик мусора для очистки системных ресурсов (т.е. файлов)?
Спасибо всем за ваши ответы. Я принял предложение Кристоффера, так как его было проще всего реализовать, и именно это я и сделал.
Полагаю, из-за того, что уборка через столько лет заставила меня забыть об основных делах, которые мне приходилось выполнять, в трудные времена в хорошие времена C ++.