JDK 7 이전에는 기존 코드에서 흔히 사용되는 close() 메서드를 사용하여 파일을 명시적으로 닫았습니다.
JDK 7에서는 파일 스트림과 같은 리소스 닫기를 자동화하는 try-with-resources를 도입했습니다.
리소스 사용 시도의 주요 장점은 메모리 누수를 방지하고 리소스가 더 이상 필요하지 않을 때 리소스가 해제되도록 하는 것입니다.
try-with-resources의 기본 구조는 다음과 같습니다.
try (기능 사양) {
//리소스 사용
}
리소스 사양은 try 블록 끝에서 자동으로 닫히는 리소스를 선언하고 초기화합니다.
리소스는 자동으로 관리되므로 close()를 명시적으로 호출할 필요는 없습니다.
try-with-resource에는 catch 및 finally 절이 포함될 수 있습니다.
FileInputStream 및 FileOutputStream과 같은 스트림 클래스를 포함하는 AutoCloseable 인터페이스를 구현하는 리소스에만 사용할 수 있습니다.
try-with-resources를 구현한 예는 ShowFile 프로그램의 수정된 버전입니다.
프로그램에서 파일은 fin이라는 FileInputStream이 선언된 try-with-resources 문을 사용하여 열립니다.
fin 변수는 try 블록에 로컬이며 입력 시 생성됩니다.
try 블록을 종료하면 fin과 관련된 파일이 자동으로 닫히므로 명시적으로 close()를 호출할 필요가 없습니다.
이 접근 방식은 파일을 닫는 것을 잊지 않고 자동 리소스 관리의 이점을 제공합니다.
try 문에 선언된 리소스는 암시적으로 최종이며 생성 후에는 재정의될 수 없습니다.
리소스 범위는 try-with-resources 블록으로 제한됩니다.
각 리소스 사양을 세미콜론으로 구분하여 하나의 try 문으로 여러 리소스를 관리할 수 있습니다.
fin과 fout을 모두 관리하기 위해 try-with-resources를 사용하도록 CopyFile 프로그램을 수정하는 방법을 보여주는 예가 제공됩니다.
리소스 사용의 장점:
파일 등의 리소스는 try 블록이 끝나면 자동으로 닫힙니다.
기존 접근방식에 비해 코드가 더 간결하고 최적화되었습니다.
예외 처리:
리소스 폐쇄 중 예외는 억제되지만 손실되지는 않습니다.
숨겨진 예외 목록을 통해 두 예외(원본 및 종료)에 모두 액세스할 수 있습니다.
전통적인 접근 방식에 대한 지식의 중요성:
try-with-resources를 사용하지 않는 레거시 코드를 유지하는 데 필요합니다.
JDK 7 이상 버전을 지원하지 않는 환경에서 작업할 때 중요합니다.
결론:
최적화되고 강력한 리소스 관리를 위해서는 try-with-resources를 권장합니다.
프로그래머에게는 전통적인 접근 방식에 대한 지식이 필수적입니다.
위 내용은 파일 자동 닫기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!