JAXB解组错误后文件被阻止的文件

时间:2012-09-12 20:44:08

标签: java file exception jaxb unmarshalling

我有一个JAXB marshall / unmarshall进程可以正常工作,除此之外:有时我必须解组的文件为空或格式不正确,因此unmarshall会抛出异常。这没关系,但是在这个异常之后,我的文件解组(源xml文件java对象)被阻止了。我不能用它。

我注意到这个尝试在unmarshall异常后立即删除或重命名文件。如果没有异常发生,那么文件可以毫无问题地使用。

有没有办法“解锁”这些文件?我认为必须有任何方法来释放,关闭或释放已阻止我的文件的JAXB上下文或unmarshaller对象的资源。

提前致谢,

达尼

2 个答案:

答案 0 :(得分:2)

您可以从文件中创建FileInputStream,然后解组。然后,您可以更好地控制发生错误时发生的情况。

FileInputStream inputStram = new FileInputStream(file);
Foo foo = (Foo) Unmarshaller unmarshal(inputStream);

答案 1 :(得分:0)

我错过了finally块中的资源解放(关闭流等)。多年前Noob错误!谢谢!