본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 25일차 이어서..(NIO 2)

1. NIO

.- java.io 패키지의 성능을 보강하기 위해 추가된 API다.

.1) Paths와 Path 클래스

..(1) Path path = Path.get(“C:\\JavaStudy\\PathDemo.java”);

..(2) Path는 경로를 표현하기 위한 인터페이스이며, Paths.get 메소드가 반환하는 ‘경로

......정보를 담은 인스턴스’를 참조하는 참조변수 선언에 사용된다.

......(\는 이스케이프 시퀀스 문자이므로 \\으로 표시한다.)

..(3) 해당 파일의 존재유무와 상관없으며 이 문장을 실행한다고 해서 경로에 파일이 생성이

......되는 것도 아니다.

※ Paths.get 기본예시

☞ getRoot() : 루트 디렉토리 반환

☞ getParent() : 부모 디렉토리 반환

☞ getFileName() : 파일 이름 반환

 

※ Paths.get(“”) : ‘현재 디렉토리’정보를 상대경로의 형태로 담는 인스턴스 예시

 

.2) 파일 및 디렉토리의 생성과 소멸

..(1) public static Path createFile(Path path, FileAttribute<?>...attrs) throws IOException

...☞ 지정한 경로에 빈 파일 생성, 경로가 유효하지 않거나 파일이 존재하면 예외 발생

..(2) public static Path createDirectory(Path dir, FileAttribute<?>...attrs) throws IOException

...☞ 지정한 경로에 디렉토리 생성, 경로가 유효하지 않으면 예외 발생

..(3) public static Path createDirectories(Path dir, FileAttribute<?>...attrs) throws IOException

...☞ 지정한 경로의 모든 디렉토리 생성

※ 파일 및 디렉토리 생성 예시

 

.3) 파일을 대상으로 하는 간단한 입력 및 출력

..(1) bin 파일에 데이터를 쓰고 읽는 방법이다.

public static byte[] readAllBytes(Path path) throws IOException

public static Path write(Path path, byte[] bytes, OpenOption...options) throws IOException

..(2) 입출력할 데이터의 양이 적고 성능이 문제되지 않는 경우에 한 해만 사용해야 한다.

※ 파일을 대상으로 하는 간단한 입력 예시

 

☞ Fileswrite(fp, buf1, StandardOpenOption.APPEND); 가 파일에 데이터를 저장한다.

..☞ fp가 지시하는 파일에 배열 buf1의 데이터 전부가 저장된다.

..☞ 위 메소드를 호출하면 자동으로 파일이 열리고 닫힌다.

..☞ 위 문장에서 사용할 수 있는 옵션들의 내용은 다음과 같다.

...☞ APPEND : 파일의 끝에 데이터를 추가한다.

...☞ CREATE : 파일이 존재하지 않으면 생성한다.

...☞ CREATE_NEW : 새 파일을 생성한다. 이미 파일이 존재하면 예외 발생

...☞ TRUNCATE_EXISTING : 쓰기 위해 파일을 여는데 파일이 존재하면 덮어 씀

..☞ write 메소드를 호출하면서 옵션을 전달하지 않으면 CREATE. TRUNCATE_EXISTING

......이 기본옵션으로 지정

..(3) 문자 데이터 입력 및 출력 메소드

public static List<String> readAllLines(Path path) throws IOException

public static Path write(Path path, Iterable<? extends CharSequence> lines, OpenOption...options) throws IOException

※ 문자 데이터 입출력 예시

 

..(4) 파일 및 디렉토리의 복사와 이동

public static Path copy(Path source, Path target, CopyOption...options) throws IOException

public static Path move(Path source, Path target, CopyOption...options) throws IOException

☞ 옵션 1 REPLACE_EXISTING : 이미 파일이 존재한다면 해당 파일을 대체한다.

☞ 옵션 2 COPY_ATTRIBUTES : 파일의 속성까지 복사를 한다.

※ Copy 예시

 

※ Move 예시

 

NIO.2 기반의 I/O 스트림 생성

.- NIO,2의 Files 클래스에서는 스트림의 생성을 위한 메소드를 별도로 제공하고 있어 보다 간단하게 스트림을 생성할 수 있다.

Path fp = Paths.get(“data.get”);

InputStream in = Files.newInputStream(fp);

※ NIO.2 기반 바이트 스트림 생성 예시

.1) 문자 스트림의 생성

..- Files 클래스는 newBufferedWriter 메소드를 제공하기 때문에 버퍼링기능이 있는 문자스트림을 바로 생성할 수 있다.

Path fp = Paths.get(“String.txt”);

BufferedWriter bw = Files.newBufferedWriter(fp); // 버퍼링 하는 문자 출력 스트림 생성