Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

자바에서 ARM이란?

<시간/>

리소스는 AutoClosable 인터페이스를 구현하는 개체입니다. 프로그램에서 리소스를 사용할 때마다 사용 후에는 닫는 것이 좋습니다.

처음에 이 작업은 finally 블록을 사용하여 수행됩니다.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class FinalExample {
   public static void main(String[] args) throws IOException {
      File file = null;
      FileInputStream inputStream = null;
      try {
         file = new File("D:\\source\\sample.txt");
         inputStream = new FileInputStream(file);
         Scanner sc = new Scanner(inputStream);
         while(sc.hasNextLine()) {
            System.out.println(sc.nextLine());
         }
      } catch(IOException ioe) {
         ioe.printStackTrace();
      } finally {
         inputStream.close();
      }
   }
}

출력

This is a sample file with sample text

Java의 ARM은 자동 리소스 관리를 의미하며 Java7에서 도입되었으며 리소스는 try 블록에서 선언되어야 하고 블록 끝에서 자동으로 닫힙니다. try-with 리소스 블록이라고도 하며 여기에서 선언하는 개체는 리소스여야 합니다. 즉, AutoClosable 유형이어야 합니다. .

다음은 try-with-resources 문의 구문입니다 -

try(ClassName obj = new ClassName()){
   //code……
}

JSE7부터 try-with-resources 문이 도입되었습니다. 여기에서 try 블록에 하나 이상의 리소스를 선언하고 사용 후 자동으로 닫힙니다. (try 블록의 끝에서)

try 블록에서 선언한 리소스는 java.lang.AutoCloseable 클래스를 확장해야 합니다.

Following program demonstrates the try-with-resources in Java.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class FinalExample {
   public static void main(String[] args) throws IOException {
      try(FileInputStream inputStream = new FileInputStream(new File("D:\\source\\sample.txt"));) {
         Scanner sc = new Scanner(inputStream);
         while(sc.hasNextLine()) {
            System.out.println(sc.nextLine());
         }
      } catch(IOException ioe) {
         ioe.printStackTrace();
      }
   }
}

출력

This is a sample file with sample text

자바의 여러 리소스

또한 try-with 리소스에서 여러 리소스를 선언할 수 있으며 블록이 끝날 때 모두 한 번에 닫힙니다.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopying {
   public static void main(String[] args) {
      try(FileInputStream inS = new FileInputStream(new File("E:\\Test\\sample.txt"));
      FileOutputStream outS = new FileOutputStream(new File("E:\\Test\\duplicate.txt"))){
         byte[] buffer = new byte[1024];
         int length;
         while ((length = inS.read(buffer)) > 0) {
            outS.write(buffer, 0, length);
         }
         System.out.println("File copied successfully!!");
      } catch(IOException ioe) {
         ioe.printStackTrace();
      }
   }
}

출력

File copied successfully!!