1

Java7 코드를 작성 중이며 try-with-resources 기능을 사용합니다. ZipOutputStream 인스턴스를 만들면 어떻게됩니까? 그렇게함으로써 더 이상 finally 블록의 스트림을 닫지 않아도됩니다. try-with-resources는 (물론 JVM에 의해) 그것을 관리했다.
내 질문에 - closeEntry()의 사용은 어떻습니까? try 블록에이 메소드를 작성해야합니까? 삭제해야합니까? JVM은 try (with) 메소드로 close() 메소드를 사용하는 것처럼 자동으로 닫힙니다.클래스 ZipOutputStream의 closeEntry()

나는 try-with-resources (또는 finally 블록)와 관련이 없다고 확신한다. try 블록과 finally 블록이 아닌 try 블록 내에서해야한다. -catch-finally). 그러나 나는 그것에 대해 확신하고 싶다.

감사합니다 !!!

답변

1

closeEntry()는 어떻게 사용합니까? try 블록에이 메소드를 작성해야합니까? 삭제해야합니까? JVM은 try (with) 메소드로 close() 메소드를 사용하는 것처럼 자동으로 닫힙니다.

closeEntry()을 호출하려면 호출해야합니다. try-with-resources 블록이 종료 될 때 자동으로 호출되지 않습니다. 최소한 직접적으로는 그렇지 않습니다. closeEntry()이 논리적으로 putNextEntry()과 쌍을 이루고 try 블록의 본문을 입력해도 putNextEntry()이 호출되지 않아야합니다.

실제로 스트림 항목이 호출 될 때 항목이 열려 있으면 스트림 닫힘이 closeEntry()의 효과를 포함 할 수 있습니다. 그러나 이것은 문서화되어 있지 않으므로 가장 안전한 방법은 실제로 마지막 항목 다음에 closeEntry()이 호출되도록하는 것입니다. 항목간에 항목을 호출 할 수도 있지만 새로 입력하기 전에 열려있는 항목을 닫으므로 putNextEntry()이 문서화되어 있기 때문에 그렇게 할 필요가 없습니다.