我有一个JAXB marshall / unmarshall进程可以正常工作,除此之外:有时我必须解组的文件为空或格式不正确,因此unmarshall会抛出异常。这没关系,但是在这个异常之后,我的文件解组(源xml文件java对象)被阻止了。我不能用它。
我注意到这个尝试在unmarshall异常后立即删除或重命名文件。如果没有异常发生,那么文件可以毫无问题地使用。
有没有办法“解锁”这些文件?我认为必须有任何方法来释放,关闭或释放已阻止我的文件的JAXB上下文或unmarshaller对象的资源。
提前致谢,
达尼
答案 0 :(得分:2)
您可以从文件中创建FileInputStream
,然后解组。然后,您可以更好地控制发生错误时发生的情况。
FileInputStream inputStram = new FileInputStream(file);
Foo foo = (Foo) Unmarshaller unmarshal(inputStream);
答案 1 :(得分:0)
我错过了finally块中的资源解放(关闭流等)。多年前Noob错误!谢谢!