Transformer não libera arquivo após a geração do XML

Pessoal, estou tendo o seguinte problema.
Necessito gerar um XML temporário, utilizar suas informações e depois excluir ele do disco. Utilizo uma API de tratamento que necessita do arquivo físico, por isso o mesmo não pode estar somente em memória.

Utilizei o seguinte exemplo já postado aqui para geração:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileWriter;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 *
 * @author T_FFerreira
 */
public class TesteMontarXML {

    public TesteMontarXML() {
    }


/**
* @author back
*/

   
   static Document doc;
   
   public void MontaXML() {
   
      try{
      
//gera o Document
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      doc = builder.newDocument();

//adiciona os elementos e atributos      
      Element agrodados = doc.createElement("agrodados");
      Element cadastro = doc.createElement("cadastro");
      
      Element tpm;
      Element tpma;
      
      cadastro.setAttribute("date", "1999-100-10");
      
      tpm = doc.createElement("Grupo");
      tpm.setAttribute("cod", "12");
      tpm.appendChild(doc.createTextNode("nomeGrupo"));
      cadastro.appendChild(tpm);
      
      tpm = doc.createElement("Subgrupo");
      tpm.setAttribute("cod", "12");
      tpm.appendChild(doc.createTextNode("nomeSubgrupo"));
      cadastro.appendChild(tpm);
      
      tpm = doc.createElement("Assunto");
      tpm.setAttribute("cod", "100");
      tpm.appendChild(doc.createTextNode("NomeAssunto"));
      cadastro.appendChild(tpm);

      tpm = doc.createElement("periodicidade");
      tpm.setAttribute("cod","1000");
      tpm.setAttribute("name", "theName");
      tpma = doc.createElement("Lay_out");
      tpma.appendChild(doc.createTextNode("formatoLayOut"));
      tpm.appendChild(tpma);
      cadastro.appendChild(tpm);      
            
      agrodados.appendChild(cadastro);
      
      doc.appendChild(agrodados);
      
//Realiza a saida do XML para o console
      Transformer trans = TransformerFactory.newInstance().newTransformer();
      trans.setOutputProperty(OutputKeys.INDENT, "yes");
      trans.transform(new DOMSource(doc), new StreamResult(new FileWriter(new File("c:/teste.xml")))); // vai gerar um arquivo chamado teste.xml na raiz do drive C: do Windows. 

      doc = null;
      trans = null;
      doc = builder.newDocument();
      trans = TransformerFactory.newInstance().newTransformer(); 
      

      }catch(Exception ex){
         ex.printStackTrace();
      }   
   }
}

Porém o que ocorre é que se eu tento excluir o arquivo (seja manualmente via DELETE do DOS) ou seja via classe File, o sistema operacional me informa que o arquivo está sendo usado.

Por exemplo, se após a última linha do código acima eu fizesse algo assim antes de terminar o método:

File fTemp = new File("c:/teste.xml");
fTemp.delete();

Ele simplesmente não apaga. Se dou um Breakpoint nesse ponto e tento excluir manualmente pelo Windows ele não deixa e diz que o arquivo está sendo usado!

Como poderia proceder para liberar o arquivo XML e poder assim excluí-lo?? Já tentei de tudo por aqui e nada!!

Espero que alguém tenha uma Luz!!

Grande Abraço!

Fabiano