我正在使用IOUtils來決議JSON從HttpServletRequest請求:
baseRequest.setAuthentication(null)。
response.setContentType("application/json")。
response.setStatus(HttpServletResponse.SC_OK)。
baseRequest.setHandled(true)。
PrintWriter writerResponse = response.getWriter()。
-> String data = IOUtils.toString(request.getInputStream(),"UTF-8"); <-
但是Eclipse抱怨說有一個潛在的資源泄漏:
潛在的資源泄漏。'<unassigned Closeable value>'可能未被關閉。
即使我用一個try/finally塊將其包圍,并通過IOUtils.closeQuietly()關閉,錯誤也像一頭頑固的騾子一樣持續存在。
String data = "。
try {
data = IOUtils.toString(request.getInputStream(), "UTF-8") 。
} catch (IOException e) {
} finally {
IOUtils.closeQuietly(request.getInputStream())。
是什么導致了這個錯誤,我應該如何解決?
P.S
而下面的代碼:
try {
String data = IOUtils.toString(request.getInputStream(), "UTF-8" /span>)。
} catch (IOException e) {
} finally {
IOUtils.closeQuietly(request.getInputStream())。
沒有拋出任何錯誤,只要我嘗試在代碼的任何地方使用 "data "這個值(甚至在try陳述句中),錯誤就會再次出現。
uj5u.com熱心網友回復:
這個錯誤是正確的。 getInputStream很可能在你每次呼叫getInputStream時回傳一個新的輸入流,所以關閉一個新的輸入流并沒有幫助。
將輸入流保存在一個變數中。 最重要的是,使用 try-with-resources:
try (InputStream stream = request.getInputStream() ) {
data = IOUtils.toString(stream, "UTF-8") 。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308528.html
標籤:
