是否需要显式关闭gson中的JsonReader

时间:2017-10-02 23:04:22

标签: java gson jsonreader

我想在读取json文件时使用gson执行此操作:

JsonReader reader = new JsonReader(new InputStreamReader(
                new FileInputStream(filename)));
JsonParser jsonParser = new JsonParser();
return jsonParser.parse(reader).getAsJsonObject();

我会在其他地方使用返回的JsonObject做更多的事情。

我的问题是,这是否可以,因为我从不关闭读者。

从JsonReader的gson API,它显示JsonReader实现了AutoClosable。这是否意味着JsonReader将自动关闭?如果是这样,它何时关闭以及如何关闭?

谢谢。

1 个答案:

答案 0 :(得分:2)

是的,你必须关闭你的读者。 正如shmosel所指出的,AutoClosable可以用于Java 7中引入的try-with-resource语句。

以下是调整代码的方法:

try(JsonReader reader = new JsonReader(new InputStreamReader(
    new FileInputStream(filename))))
{
  JsonParser jsonParser = new JsonParser();
  return jsonParser.parse(reader).getAsJsonObject();
}