我有这段读取 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.
这是正常现象还是我做错了什么?非常感谢。
最佳答案
好的,@deHaar,是对的:
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
JsonObject data = gson.fromJson(bufferedReader, JsonObject.class);
Log.d(TAG, "DATA: " + data.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这样我就不会收到警告。但我不明白为什么。如果有人可以在评论中写下它,我将不胜感激。谢谢。
关于java - 如何正确关闭BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54885804/