저는 처음으로 FileInputStream
으로 작업 중이며 파일에서 객체 (Item
)를로드하려고합니다. ObjectInputStream을 올바르게 닫는 방법?
이
내 코드입니다 :이 그것을 할 수있는 표준 방법입니다 읽었습니다try {
FileInputStream fi = new FileInputStream(f);
ObjectInputStream reader = new ObjectInputStream(fi);
while (true) {
Item i = (Item)reader.readObject();
System.out.println(i.getName());
}
} catch (Exception e) {
System.out.println(e.toString());
}
와 코드가 잘 작동합니다. 그러나 EOFException
이 던져 지자 마자 컴파일러가 catch
블록으로 점프하기 때문에 fi
과 reader
은 절대로 닫히지 않습니다.
컴파일러는 나를 fi
및 reader
catch
에서 또는 finally
블록을 종료하지 않습니다. 이게 진짜로 있어야하는 방법인가요? 입력 개체를 제대로 닫으려면 어떻게해야합니까?
try/catch 외부 변수를 선언하고 내부에 할당하십시오. 그런 다음 finally 블록 안에서 닫을 수 있습니다. – csmckelvey
try-with-resources를 사용하십시오. https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Pshemo