반응형
- NIO ( New Input Output )
- NIO의 동작 방식은 버퍼를 만들어서 채널에 쓰는 방식으로 동작한다.
- java.io 에서는 InputStream / OutputStream을 얻어서 별도의 읽기/쓰기로 동작되지만,
- java.nio 에서는 Stream에서 채널을 얻거나 또는 채널을 생성하면, 양방향으로 가능하다.
- NIO File 샘플 소스
package sample;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileNioSample {
public static void test( String contents ) {
// 1. path 설정
Path path = Paths.get( "nio_file_test.txt" );
try {
// 쓰기
// 2. 채널을 생성한다.
//FileChannel fc = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ);
FileChannel fc = FileChannel.open(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE);
// 3. 캐릭터셋을 얻고, 버퍼를 만든다.
Charset cs = Charset.defaultCharset();
ByteBuffer bb = cs.encode( contents );
// 채널에 버퍼를 쓴다.
int wCnt = fc.write(bb);
System.out.println(wCnt + "/" + bb.toString());
fc.close();
// 읽기
fc = FileChannel.open(path, StandardOpenOption.READ);
bb = ByteBuffer.allocate(1024);
int rCnt = fc.read(bb);
bb.flip(); // 버퍼의 포지션을 0 으로 옮김.
System.out.println(rCnt + "/" + bb.toString());
CharBuffer cb = cs.decode(bb);
System.out.println(cb);
fc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String...strings) {
FileNioSample.test("hello world~~ \nnio test start!!!");
}
}
- 결과
반응형
'IT > Java' 카테고리의 다른 글
[JAVA] 람다식 개념 (0) | 2024.05.04 |
---|---|
인텔리제이 커뮤니티(Intellij Community)에 스프링부트(Springboot) 프로젝트 생성하기 (0) | 2024.02.14 |
인텔리제이(Intellij)를 사용하다. (0) | 2024.02.13 |
Spring Integration (0) | 2023.08.17 |
[Java] java.nio.file.Files 클래스 (0) | 2022.10.31 |
[Java] Socket 통신 샘플 소스 (0) | 2022.10.06 |
enum 열거형 (0) | 2022.07.22 |
디폴트 메서드(default method) (0) | 2022.07.08 |
[람다식] JAVA에서의 람다식/기본편 (0) | 2022.07.08 |
[개발환경] 이클립스 / JDK (0) | 2022.06.20 |