簡體   English   中英

commons-io 的 FileUtils.readFileToByteArray 是否關閉了新創建的 stream?

[英]Does commons-io's FileUtils.readFileToByteArray close the newly created stream?

我正在創建一個程序,為目錄中的每個文件生成校驗和。 我正在使用FileUtils.readFileToByteArray ,它在內部創建一個新的 FileInputStream。 問題是我沒有找到 stream 的關閉位置,並且想知道可能的 memory 泄漏。

所以我要問:這個方法讀完stream會關閉嗎?

簡短回答:是的,它關閉了 stream。

稍微長一點的回答:讓我們看一下代碼:

try (InputStream in = openInputStream(file)) {
    final long fileLength = file.length();
    // file.length() may return 0 for system-dependent entities, treat 0 as unknown length - see IO-453
    return fileLength > 0 ? IOUtils.toByteArray(in, fileLength) : IOUtils.toByteArray(in);
}

您在此處看到的是try-with 資源語法。 try的括號中打開的任何AutoClosable (在本例中為FileInputStream )都將在try塊終止時隱式關閉,無論它是正常終止還是通過return ing、拋出異常等方式終止。

暫無
暫無

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

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