我有下面的代碼:如何關閉嵌套的I/O流在Java中
try{
fileOutputStream = new FileOutputStream(downloadFile1);
outputStream1 = new BufferedOutputStream(fileOutputStream);
boolean success = ftpclient.retrieveFile(completePath.get(i), outputStream1);
if (success) {
System.out.println(completePath.get(1)+" downloaded!");
}
}finally {
if (outputStream1!=null) outputStream1.close();
if(fileOutputStream!=null) fileOutputStream.close();
}
的IntelliJ是給錯誤FileOutputStream中需要過於封閉。
而如果我在改變流收盤順序finally塊
finally {
if(fileOutputStream!=null) fileOutputStream.close();
if (outputStream1!=null) outputStream1.close();
}
那麼有沒有錯誤,但由於流被關閉未來的文件沒有完全下載。
有人可以建議正確的方法來做到這一點?
嘗試用資源? – Eugene
謝謝@eugene,你的建議確實奏效。使用試用資源似乎是一種更簡單的方法。 – avi
同樣的事情是在答案建議,請接受它的情況下,幫助 – Eugene