java NIO(一)Channel

java NIO(一)Channel

nio中的channel与流的区别在于,流的读写通常是单向的,而通道可以异步的读写,也就是说这个channel可以读数据到缓冲区,缓冲区也可以写数据到channel

Channel的实现

Java NIO中最重要的通道实现有以下几种

FileChannel

DatagramChannel

SocketChannel

ServerSocketChannel

FileChannel从文件中读写数据

DatagramChannel可以通过UDP读写网络中的数据

SocketChannel能通过TCP读写网络中的数据

ServerSocketChannel可以监听新进来的TCP连接,每一个新进来的连接都会创建一个SocketChannel

下面是一个例子

try {
            RandomAccessFile aFile = new RandomAccessFile(
                    "Config.xml","rw");
            FileChannel inChannel = aFile.getChannel();

            ByteBuffer buffer = ByteBuffer.allocate(48);

            int byteRead = inChannel.read(buffer);

            while (byteRead != -1){
                System.out.println("Read "+byteRead);
                buffer.flip();

                while (buffer.hasRemaining())
                    System.out.print((char) buffer.get());

                buffer.clear();
                byteRead = inChannel.read(buffer);
            }

            aFile.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

你可能感兴趣的:(java NIO(一)Channel)