После нескольких лет кодирования со старым API File
я, наконец, готов перепрыгнуть на весь поезд Path
/Paths
. По большей части, это прошло гладко, однако я в тупике по этому аспекту: временные файлы.Автоматически удалять временные файлы с помощью «нового» API файлов Java
Документация по java.nio.Files#createTempFile
говорит:
Как с
File.createTempFile
методами, этот метод является лишь частью временного файла объекта. В случае использования в качестве рабочих файлов результирующий файл может быть открыт с использованием опцииDELETE_ON_CLOSE
, так что файл будет удален при вызове соответствующего метода close. В качестве альтернативы, для автоматического удаления файла может использоваться механизм выключения или механизмFile.deleteOnExit()
.
Я не вижу, где указывается опция DELETE_ON_CLOSE
. Использование крюка выключения невероятно неудобно (если я не думаю об этом неправильно). Стремясь избежать использования как Path
объектов , так иFile
объектов, я ищу решение, подобное File.deleteOnExit()
для объекта Path, но, очевидно, тот, который не требует использования Path.toFile().[...].toPath()
вида вызывающего шаблона.
Каков правильный способ реализации «самоуничтожающихся» временных файлов с использованием API java.nio.Files
?
'path.toFile() deleteOnExit()'? – assylias
@assylias Я подумал об этом, но я думал, что это будет лучший способ сделать это. Метод 'toFile()' преобразуется в объект 'File', который является частью старого API. Это решение, которое я использую сейчас, но, как я уже сказал, я стараюсь избегать использования старого API. –
Файл не устарел и нет ничего плохого в этом решении! Чтобы использовать опцию open, вы можете, например, использовать один из Files.newXxx, например newBufferedWriter. Но это может быть нецелесообразно для вашего случая использования. – assylias