簡體   English   中英

如何正確關閉BufferedReader

[英]How to correctly close BufferedReader

我有用於讀取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();
}

這樣我就不會收到警告。 但是我不明白為什么。 如果有人可以在評論中寫出來,我將不勝感激。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM