有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

xml无法删除java Transformer创建的文件


我以以下方式使用java中的Transformer类:

1   Transformer transformerFinal = tFactory.newTransformer(new StreamSource(finalStylesheet));
2   transformerFinal.setParameter("Date", sdf.format(myDate));
3   transformerFinal.transform(new StreamSource(tempFilename), new StreamResult(new FileOutputStream(finalFilename)));

然后我想删除这个用于转换的源文件

4       File fileToDelete = new File(tempFilename);                    
5       fileToDelete.delete();

它不起作用,我的意思是文件不会被删除
但是如果在line 3我传递一个o/p流的局部变量,即

1   FileOutputStream fos = new FileOutputStream(finalFilename);
4   transformerFinal.transform(new StreamSource(tempFilename), new StreamResult(fos));
5   fos.close();

现在,删除功能开始工作,它确实删除了文件
那么,当我得出结论,o/p流在transform过程中没有隐式关闭时,我是对的吗?因此我必须明确地关闭流
如果有任何其他原因导致文件无法删除,请大家分享

请假设所有变量都有正确的值

谢谢

Update

还有一件事我注意到了
我从另一个类调用此代码,例如-

public class ClassTwo {
   public void ameth(String tempFilename) {
     // the above mentioned transformation code
   }
}

1   public class ClassOne {
2       public void method1() {
3           ClassTwo ct = new ClassTwo();
4           ct.ameth("tempFilename1");
5           ct.ameth("tempFilename2");
6       }
7   }

在这里,当我没有显式关闭流时,它确实删除了tempFilename2,但没有删除tempFilename1
知道为什么会这样吗


共 (0) 个答案