java关闭打印流_java-通过StreamResult关闭输出流
我正在开发⼀个Android应⽤程序,到⽬前为⽌还不错,但是我遇到了⼩⼩的⿇烦.
在项⽬中,我正在处理XML⽂件,并将它们保存到Android设备的外部存储中.为此,我使⽤了TransformerFactory和StreamResult对象.
TransformerFactory transFactory = wInstance();
Transformer trans = wTransformer();
DOMSource xmlSource = new DOMSource(xmlDoc);
java stream
StreamResult result = new ExternalStorageDirectory() + "/l");
因此,⽂件的保存⼯作正常,但是我遇到的问题是,最后⼀⾏是OutputStream().close();.我收到⼀个Nullpointer异常.
所以我的问题很简单:是否需要我关闭流,或者某些⽅法将其关闭?当我删除最后⼀⾏时,它仍然保存⽂件,并且完全没有错误,对此我感到很满意,但是我不想让任何流保持打开状态.
解决⽅法:
public OutputStream getOutputStream()
Get the byte stream that was set with setOutputStream.
Returns:
The byte stream that was set with setOutputStream, or null if setOutputStream or the ByteStream constructor was not called.
在调⽤⽂件构造函数时,未设置字节流.由于类描述和⽂件构造函数都没有指出您需要⼿动关闭任何内容,因此可以安全地假设您不需要执⾏任何操作.
编辑:这取决于您正在应⽤的变压器,在您的情况下,您正在使⽤标识(output = input)变压器.在我的设置中,这是通过
apache.xalan.ax.TransformerImpl实现的,它将关闭它打开的所有输出流:(第760-767⾏)
// If we create an output stream for the Result, we need to close it after the transformation.
if (_ostream != null) {
try {
_ostream.close();
}
catch (IOException e) {}
_ostream = null;
}
标签:xml,java,android

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。