본문 바로가기

프로그램/java

FileChannel

반응형
FileChannel

java의 NIO에서 좀더 빠른 속도로 access를 하기 위해 나옴

Buffer 객체를 입출력 자료형으로 사용함

InputStream : 읽기 전용 채널을 얻을 수 있음
OutputStream : 쓰기 전용 채널을 얻을 수 있음
RandomAccessFile : 읽기/쓰기 전용 채널을 얻음

Buffer의 allocateDirect 를 통해 시스템 메모리 공간을 활용하므로서 속도 향상


샘플 예제

        RandomAccessFile raf = new RandomAccessFile("addfile/test.txt", "rw");
       
        FileChannel fc = raf.getChannel();
       
        String message = "안녕하세요..";
       
        ByteBuffer byteBuf1 = ByteBuffer.allocate(message.getBytes().length);
       
        byteBuf1.put(message.getBytes());
       
        // limit를 현재 position
        // position 을 0 으로 setting
        byteBuf1.flip();
       
        fc.write(byteBuf1);
       
        ByteBuffer byteBuf2 = ByteBuffer.allocate(300);
       
        fc.position(0);
        fc.read(byteBuf2);
        byteBuf2.flip();
       
        byte[] b = byteBuf2.array();
       
        System.out.println(new String(b));
       
       
        fc.close();
        raf.close();