Channel VS Stream
- 通道是双向通信,流是单向通信(输入流、输出流)
- 通道能够非阻塞的读写
-
Channel实现
FileChannel
从文件中读写数据
DatagramChannel
网络传输,UDP
SocketChannel
网络传输,TCP
ServerSocketChannel
网络传输,监听某一端口,等待SockerChannel的连接,每当有连接接入,就会有一个SockerChannel被创建。
示例
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");FileChannel inChannel = aFile.getChannel();ByteBuffer buf = ByteBuffer.allocate(48);int bytesRead = inChannel.read(buf);while (bytesRead != -1) {System.out.println("Read " + bytesRead);buf.flip();while(buf.hasRemaining()){System.out.print((char) buf.get());}buf.clear();bytesRead = inChannel.read(buf);}aFile.close();
对于flip()``clean()``hasRemaining()的讲解,我们下一节再说。
