Java try-with-resource

3804 단어 Java
Java try - with - resource 구문
Try - with - resourse 문 구 는 Python 의 with 문 구 를 사용 하 는 것 과 유사 합 니 다. 모두 자원 을 자동 으로 방출 합 니 다. 전통 적 인 try - catch - finally 처럼 finally 로 자원 을 닫 아야 하지 않 고 자원 을 많이 방출 할 때 끼 워 넣 고 자원 을 닫 는 현상 이 발생 합 니 다.
다음은 구체 적 인 사용 방법 입 니 다.
일반적인 자원 방출 방법
/**
    * @Description:          
    * @Param: []
    * @return: void
    * @Author: Chen
    */
    @Test
    public void testDemo2() {
        Scanner scanner = null;
        try {
            scanner = new Scanner(new File("H:\\TestProject\\src\\main\\java\\com\\chen\\test.txt"));       //             
            while (scanner.hasNext()) {
                System.out.println(scanner.nextLine()); //    
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            //       
            if (scanner != null) {
                scanner.close();
            }
        }
    }

try - with - resource 방법 을 사용 하면 자원 이 자동 으로 닫 힙 니 다.
/**
    * @Description:   try-with-resource         
    * @Param: []
    * @return: void
    * @Author: Chen
    */
    @Test
    public void testDemo3() {
        try (Scanner scanner = new Scanner(new File("H:\\TestProject\\src\\main\\java\\com\\chen\\test.txt"))) {
            while (scanner.hasNext()) {
                //          
                System.out.println(scanner.nextLine());
            }
        } catch (FileNotFoundException file) {
            file.printStackTrace();
        }
    }

try - with - resource 를 사용 하여 여러 자원 을 닫 습 니 다.
/**
    * @Description:   try-with-resource      
    * @Param:
    * @return:
    * @Author: Chen
    */
    @Test
    public void testDemo4() {
        try (Scanner scanner = new Scanner(new File("H:\\TestProject\\src\\main\\java\\com\\chen\\test.txt"));
            PrintWriter writer = new PrintWriter(new File("H:\\TestProject\\src\\main\\java\\com\\chen\\testWrite.txt"))
        ) {
            while (scanner.hasNext()) {
                //test.txt        test2 
                writer.println(scanner.nextLine());
            }
        } catch (FileNotFoundException file) {
            file.printStackTrace();
        }
    }

테스트 자원 닫 는 순서
import java.io.File;
import java.util.Scanner;

public class AutoCloseableResourcesFirst implements AutoCloseable {
    /**
    * @program: TestProject
    * @description:         
    * @author: Mr.Wang
    * @create: 2019-04-29 11:37
    **/
    public AutoCloseableResourcesFirst() {
        System.out.println("    ----->           ");
    }

    public void doSomething() {
        System.out.println("someThing  ----->           ");
    }

    public void close() throws Exception {
        System.out.println("      1");
    }

}

public class AutoCloseableResourcesSecond implements AutoCloseable{
    /**
    * @program: TestProject
    * @description:             
    * @author: Mr.Wang
    * @create: 2019-04-29 12:41
    **/
    public AutoCloseableResourcesSecond() {
        System.out.println("    ----->           ");
    }

    public void doSomething() {
        System.out.println("someThing  ----->           ");
    }

    public void close() throws Exception {
        System.out.println("      2");
    }
}

/**
 * @Description:          
 * @Param: []
 * @return: void
 * @Author: Chen
 */
@Test
public void testDemo5() {
    try (AutoCloseableResourcesFirst af = new AutoCloseableResourcesFirst();
         AutoCloseableResourcesSecond as = new AutoCloseableResourcesSecond()) {
        af.doSomething();
        as.doSomething();
    }catch (Exception e){
        e.printStackTrace();
    }
}

좋은 웹페이지 즐겨찾기