【发布时间】:2019-07-20 00:20:08
【问题描述】:
我有这段代码用于读取 JSON 文件:
Gson gson = new Gson();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader(path));
JsonObject data = gson.fromJson(bufferedReader, JsonObject.class);
Log.d(TAG, "DATA: " + data.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码似乎运行良好,但在 logcat 中我收到以下 3 行:
com.example.package W/System: A resource failed to call close.
com.example.package W/System: A resource failed to call end.
com.example.package W/System: A resource failed to call close.
这是正常的还是我做错了什么?非常感谢。
【问题讨论】:
-
你不能只使用
try和try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) { ... }之类的资源来摆脱finally块吗?在这种情况下,您必须为IOException添加catch子句... -
@fantaghirocco
BufferedReader似乎正在按照source 关闭底层输入。我不确定 OP 的代码是如何关闭东西的。 -
这里没有证据表明错误来自此代码。使用 try-with-resources 的建议没有任何改变。这只是 OP 已经写的内容的简写。 @deHaar
标签: java android buffer bufferedreader filereader