Copies src Channel to dst Channel - Java java.nio.channels

Java examples for java.nio.channels:WritableByteChannel

Description

Copies src Channel to dst Channel

Demo Code


//package com.java2s;
import java.io.IOException;

import java.nio.ByteBuffer;

import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;

public class Main {
    /**//  www.j a v a 2 s .c om
     * Copies src to dst
     * 
     * @param src
     * @param dest
     * @throws IOException
     */
    public static void fastChannelCopy(final ReadableByteChannel src,
            final WritableByteChannel dest) throws IOException {
        final ByteBuffer buffer = ByteBuffer.allocateDirect(16 * 1024);
        while (src.read(buffer) != -1) {
            // prepare the buffer to be drained
            buffer.flip();
            // write to the channel, may block
            dest.write(buffer);
            // If partial transfer, shift remainder down
            // If buffer is empty, same as doing clear()
            buffer.compact();
        }
        // EOF will leave buffer in fill state
        buffer.flip();
        // make sure the buffer is fully drained.
        while (buffer.hasRemaining()) {
            dest.write(buffer);
        }
    }
}

Related Tutorials