Мое веб-приложение создает файл XML.Я использую результат потока Struts2 для управления загрузкой, вот действие в struts.xml:
<action name="generateXML" class="navigation.actions.GenerateXML">
<result type="stream">
<param name="contentType">text/xml</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">1024</param>
</result>
...
</action>
Вот часть класса действия "GenerateXML", где создается FileInputStream "inputStream":
public String execute() {
File xml = new File(filename);
...//fill the file with stuff
try {
setInputStream(new FileInputStream(xml));
} finally {
//inputStream.close();
xml.delete();
}
}
Удаление файла не будет работать, потому что inputStream еще не закрыт (эта часть закомментирована).Однако, если я закрою его в этот момент, xml-файл, загруженный пользователем, будет пустым, поскольку его поток был закрыт до того, как Struts сгенерирует загрузку.Помимо использования скрипта, который регулярно удаляет эти временные файлы на сервере, есть ли способ закрыть «inputStream» ПОСЛЕ того, как распоряжения сделали свое дело?