[Java NIO 사례]FileChannel 데이터 전송

1605 단어 nio
더 읽 기
자바 NIO 채널 에서 채널 로 의 전송
 
FileChannel 의 transferFrom 와 transferTo 방법 은 데 이 터 를 FileChannel(파일 쓰기)에 편리 하 게 전송 하거나 FileChannel 의 데 이 터 를 읽 을 수 있 습 니 다(파일 읽 기).
이 두 가지 방법 은 간단 한 순환 읽 기-쓰기 보다 효율 적 입 니 다.많은 운영 체제 들 이 원본 채널 의 데 이 터 를 파일 시스템 캐 시 에 직접 전송 할 수 있 기 때문에 이 데 이 터 를 진정 으로 복사 할 필요 가 없다.
transferFrom
이 방법 은 ReadableByteChannel 의 데 이 터 를 읽 고 FileChannel 로 전송 할 수 있 습 니 다.
FileChannel fromChannel = new RandomAccessFile("from.txt", "r").getChannel();
FileChannel toChannel = new RandomAccessFile("to.txt", "rw").getChannel();
long position = 0;
long count = fromChannel.size();
toChannel.transferFrom(fromChannel, position, count);

from Channel 이 현재 제공 할 수 있 는 데이터 양 이 지정 한 데이터 양(count)보다 적 으 면 제공 할 수 있 는 데이터 만 전송 합 니 다.예 를 들 어 from Channel 이 SocketChannel 이 라면 현재 준 비 된 데이터 만 toChannel 로 전 송 됩 니 다.나중에 더 많은 데이터 가 from Channel 에 들 어가 더 라 도.
 
transferTo
이 방법 은 FileChannel 의 데 이 터 를 읽 고 WritableByteChannel 로 전송 할 수 있 습 니 다.
FileChannel fromChannel = new RandomAccessFile("from.txt", "r").getChannel();
FileChannel toChannel = new RandomAccessFile("to.txt", "rw").getChannel();
long position = 0;
long count = fromChannel.size();
fromChannel.transferTo(position, count, toChannel);

이 방법 은 transferFrom 와 비슷 하여 from Channel 과 toChannel 을 바 꾸 었 다.
transferFrom 와 마찬가지 로 from Channel 이 현재 제공 할 수 있 는 데이터 양 이 지정 한 데이터 양(count)보다 적 으 면 제공 할 수 있 는 데이터 만 전송 합 니 다.

좋은 웹페이지 즐겨찾기