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); // 버퍼링 하는 문자 출력 스트림 생성