Java Saxon XML验证:验证失败时,无法删除XML文件

Java Saxon XML验证:验证失败时,无法删除XML文件,java,xml,validation,saxon,well-formed,Java,Xml,Validation,Saxon,Well Formed,几周前,我在这里发布了。现在,我有一个类似的问题与不同的情况。我创建了一个java上传,我想在这里检查XML文件的格式是否正确。检查后,我想删除它。但是如果转换失败,我将无法删除该文件。 我创建了一个简单得多的示例,在本地计算机上运行它,我遇到了同样的问题。请参阅下面的源代码。你可以很容易地复制和粘贴它,并尝试自己 我是否发现了一个bug,可能是我几周前报告的那个bug,或者我在代码中遗漏了什么?我用的是萨克森9.4HE public class TestClass { public stat

几周前,我在这里发布了。现在,我有一个类似的问题与不同的情况。我创建了一个java上传,我想在这里检查XML文件的格式是否正确。检查后,我想删除它。但是如果转换失败,我将无法删除该文件。 我创建了一个简单得多的示例,在本地计算机上运行它,我遇到了同样的问题。请参阅下面的源代码。你可以很容易地复制和粘贴它,并尝试自己

我是否发现了一个bug,可能是我几周前报告的那个bug,或者我在代码中遗漏了什么?我用的是萨克森9.4HE

public class TestClass 
{
public static void main (String[] args) throws Exception
{
    boolean isWellFormed = isXMLwellformed(new File("work/file.xml"));

    if(isWellFormed) System.out.println("File is well formed");
    else
    {
        System.out.println("File is not well formed");
    }
    FileUtils.deleteDirectory(new File("work"));
}

private static boolean isXMLwellformed(File file)
{
    boolean isWellformed = true;
    TransformerFactory factory = TransformerFactory.newInstance();
    StreamSource source = new StreamSource(file);
    try 
    {
        Transformer trans = factory.newTransformer();
        SAXResult sink = new SAXResult(new DefaultHandler());
        trans.transform(source, sink);
    } 
    catch (TransformerException err) 
    {
        System.err.println("Validation failed: " + err.getMessage());
        isWellformed = false;
    }
    return isWellformed;
}
}

现在,我找到了一个有效的解决方案。如果我自己创建FileReader并在catch块中关闭它,它就会工作。但它不是应该自动关闭吗

    private static boolean isXMLwellformed(File file) throws IOException
   {
    boolean isWellformed = true;
    BufferedReader br = new BufferedReader(new FileReader(file));
    TransformerFactory factory = TransformerFactory.newInstance();
    StreamSource source = new StreamSource(br);
    try 
    {
        Transformer trans = factory.newTransformer();
        SAXResult sink = new SAXResult(new DefaultHandler());
        trans.transform(source, sink);
    } 
    catch (TransformerException err) 
    {
        System.err.println("Validation failed: " + err.getMessage());
        br.close();
        isWellformed = false;
    }
    return isWellformed;
    }

你能帮我们检查一下这个问题在Saxon 9.5中是否仍然存在吗?