국비교육 java

쌍용 8/14

dlsgur0528 2024. 8. 14. 10:35

NIO(Non-blocking I/O)-JDK1.4부터 도입된 클래스( JDK17에서 많은 기능이 추가)

  • 비동기적인 입.출력을 제공하는 클래스
  • 기존의 I/O보다 효율적인 다중연결과 대용량 데이터(GB이상 or  물리적 Memory보다 큰 경우) 처리시 사용
  • N I/O의 핵심구성요소는 Channel과 Buffer가 있다
  • Channel: 입/출력의 소스(파일,네트워크) 관리
  • Buffer: 데이터를 임시로 저장할 목적으로 사용하는 객체

 

비동기성(Asynchronous) : 입/출력 작업이 안료될때까지 기다리지 않고 다른 작업을 수행할 수 있는 것.

채널을 통해서 입/출력이 일어나고, 데이터는 버퍼를 통해서 전송된다

 

 

대용량 텍스트 파일 읽기

java.nio.files.path  , Files 클래스를 사용하게됨 두가지 객체 사용.

 

1.내용을 읽어들일 파일을 선택한다.

java.nio.file.Path path = Paths.get("경로");

 

2.java.nio.file.Files 를 사용하여 모든 내용을 읽어들인다.

      List<String> lines =   Files.readAllLines(path); // 리스트형으로 받아옴

쓸려면 반복돌려서 뽑아내자

for(String line : lines) {

//연결된 파일의 모든 내용을 출력

}

 

 

 

 

 

NIO를 사용한 파일복사

java.nio.file.Path    , paths,Files  클래스가 사용된다

1.원본 파일을 선택한다.

  Path original = Paths.get("원본파일명");// JDK17에서는 of method가 Path인터페이스에 추가함

2.복사할 파일을 선택한다. (없으면 만들어줌)

Path original = Paths.get("복사할 파일명");

3.복사를 수행함

Filse.copy(원본파일,복사할파일,옵션);

옵션에 StandCopyOption.REPLACE_EXISTING :파일 존재시 덮어씀

옵션을 생략하면 파일이 존재하는 경우 덮어쓰지않는다.