Как изменить имя временного файла Apache POI SXSSFWorkbook по умолчанию

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

Может кто-нибудь указать мне пример или наметить мне, что должно быть сделано? Я вижу, что есть статический метод TempFile.createTempFile. Должен ли я выполнить это с использованием переопределения класса перед созданием экземпляра класса SXSSFWorkbook? Или после?

Я также увидел, что существует класс DefaultTempFileCreationStrategy. Не могу найти примеры того, как использовать это либо.

1 ответ

Решение

Основным классом, который Apache POI использует для этого, является TempFile.

Вы хотите вызвать метод TempFile.setTempFileCreationStrategy

Что вам нужно сделать, это создать свой собственный класс, реализующий интерфейс TempFileCreationStrategy. Это красиво и просто, всего два метода, createTempDirectory и createTempFile.

Чтобы получить представление о том, что происходит, вы можете посмотреть исходный код DefaultTempFileCreationStrategy здесь. Это довольно просто, просто вставьте логику для собственных нужд с точки зрения потоков и имен.

Другие вопросы по тегам