#apache #apache-poi #sxssf
#apache-poi #sxssf
Вопрос:
Я использую класс POI SXSSFWorkbench для создания чрезвычайно больших рабочих книг. В моем приложении может быть запущено несколько процессов одновременно, поэтому я счел разумным добавить ProcessId к временному имени файла по умолчанию. Я не знаю, как это сделать, и не смог найти ни одного недавнего примера кодирования.
Кто-нибудь может указать мне на пример или описать, что нужно сделать? Я вижу, что существует статический метод TempFile.createTempFile. Должен ли я выполнять это с использованием переопределения класса перед созданием экземпляра класса SXSSFWorkbook? Или после?
Я также видел, что существует класс DefaultTempFileCreationStrategy. Также не удалось найти примеры того, как это использовать.
Ответ №1:
Основным классом, который использует Apache POI для этого, является TempFile
Метод, который вы захотите вызвать, — это TempFile.setTempFileCreationStrategy
Что вам нужно будет сделать, это создать свой собственный класс, реализующий интерфейс TempFileCreationStrategy. Это красиво и просто, всего двумя методами, createTempDirectory и createTempFile.
Чтобы получить представление о том, что с этим связано, вы можете посмотреть исходный код DefaultTempFileCreationStrategy онлайн здесь. Это довольно просто, просто добавьте логику для ваших собственных нужд с точки зрения потоков и именования.
Комментарии:
1. Спасибо. Это было полезно. Я смущен, что не видел этого раньше. Для пояснения: вызов TempFile.setTempFileCreationStrategy должен выполняться перед созданием экземпляра объекта SXSSFWorkbook? Или сразу после создания объекта workbook? Или в любое время после создания SXSSFWorkbook и первого листа? Эта часть мне не ясна.
2. Необходимо установить перед открытием книги, чтобы использовать временные файлы в зависимости от выбранных параметров
3. Будьте осторожны при использовании in в многопоточной среде.