Java7 리try-with-resources 분석(4)
try-with-resources
문이 추가되었습니다.try-with-resources
문구는 한 개 이상의 자원을 성명한 try
문구이다.이곳의 자원 중 하나는 사용이 끝난 후에 방출을 닫아야 하는 대상을 가리킨다.try-with-resources
문장은 이 문장이 실행된 후에 모든 자원을 닫을 수 있습니다.모든 것이 자바를 실현시켰다.lang.AutoCloseable 인터페이스의 대상은 모두 try-with-resources
문장에 자원으로 사용할 수 있습니다 (java.io.Closeable는 하위 인터페이스이기 때문에 지원됩니다).Java SE 7 이전에 리소스가 닫혀 있는지 확인하기 위해 다음 코드를 작성할 수 있습니다.
- static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException {
- BufferedReader br = new BufferedReader(new FileReader(path));
- try {
- return br.readLine();
- } finally {
- if (br != null) br.close();
- }
- }
하지만 Java SE 7에서는 위의 코드를 다음 코드로 바꿀 수 있습니다.
- static String readFirstLineFromFile(String path) throws IOException {
- try (BufferedReader br = new BufferedReader(new FileReader(path))) {
- return br.readLine();
- }
- }
여러 리소스를 동시에 선언할 수도 있습니다.
- public static void writeToFileZipFileContents(String zipFileName, String outputFileName) throws java.io.IOException {
-
- java.nio.charset.Charset charset = java.nio.charset.Charset.forName("US-ASCII");
- java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName);
- try (
- //
- java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
- java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
- ) {
- //
- }
- }
주의해야 할 것은 위의
try-with-resources
문장이 실행된 후에 시스템은 먼저 해제writer
를 닫고 해제zf
를 닫는다.즉try-with-resources 문장에서 자원의 닫기 방출 순서는 그들이 만든 순서와 상반된다는 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.