Как правильно закрыть BufferedReader - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть этот код для чтения файла 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. 

Это так?нормально или я что то не так делаю?Большое спасибо заранее.

1 Ответ

0 голосов
/ 27 февраля 2019

Хорошо, @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();
}

Таким образом, я не получаю предупреждения.Но я не поняла почему.Если кто-то может написать это в комментариях, я буду признателен за это.Спасибо.

...