Я хочу преобразовать XSLT с несколькими выходными файлами. Там я использовал «xsl: result-document». Когда преобразование завершается неудачно, все выходные файлы должны быть удалены. Но если генерация документа, созданного с помощью «xsl: result-document», терпит неудачу, моя программа больше не сможет удалить этот документ. Я думаю, причина в том, что «xsl: result-document» создает другой OutputStream. Кто-нибудь знает, как закрыть все выходные потоки?Saxon XSLT Transformation: Как закрыть выходной поток при сбое во время преобразования
Редактировать: Я использую Saxon 9.5 для преобразования.
Пожалуйста, смотрите ниже мой исходный код:
public void simpleTransform(String sourcePath, String xsltPath, String outputPath)
{
String resultDir=outputPath+"/filename.html";
TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource ss = new StreamSource(new File(xsltPath));
StreamResult sr = new StreamResult(new File(resultDir));
Transformer transformer = tFactory.newTransformer(ss);
try
{
transformer.transform(new StreamSource(new File(sourcePath)), sr);
System.out.println("Transformation finished!");
}
catch (TransformerException te)
{
try
{
System.out.println("Transformation failed! Trying to close Outputstreams...");
sr.getOutputStream().flush();
sr.getOutputStream().close();
transformer.reset();
System.out.println("Outputstream closed!");
try
{
FileUtils.deleteDirectory(new File(tempDirPath));
System.out.println("Files succesfully deleted!");
}
catch(Exception e)
{
e.printStackTrace();
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}