Java NIO Channel
来源:互联网 发布:java分时图和k线图 编辑:程序博客网 时间:2024/06/14 02:51
Java NIO Channel
Java NIO Channels are similar to streams with a few differences:
- You can both read and write to a Channels. Streams are typically one-way (read or write).
- Channels can be read and written asynchronously.
- Channels always read to, or write from, a Buffer.
As mentioned above, you read data from a channel into a buffer, and write data from a buffer into a channel. Here is an illustration of that:
Channel Implementations
Here are the most important Channel implementations in Java NIO:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
The FileChannel
reads data from and to files.
The DatagramChannel
can read and write data over the network via UDP.
The SocketChannel
can read and write data over the network via TCP.
The ServerSocketChannel
allows you to listen for incoming TCP connections, like a web server does. For each incoming connection aSocketChannel
is created.
Basic Channel Example
Here is a basic example that uses a FileChannel
to read some data into aBuffer
:
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();
Notice the buf.flip()
call. First you read into a Buffer. Then you flip it. Then you read out of it. I'll get into more detail about that in the next text aboutBuffer
's.
- Java NIO Channel
- Java NIO Socket Channel
- Java NIO(3-Channel)
- Java NIO Channel
- Java NIO笔记 Channel
- Java NIO Channel
- Java NIO--Channel
- java NIO Channel
- Java NIO (二) Channel
- Java NIO Channel
- Java NIO Channel
- java NIO-Channel
- Java NIO Channel
- Java NIO之Channel
- java nio channel
- Java NIO Channel tranfer
- Java NIO Channel
- java NIO Channel详解
- Android输入法挤乱布局问题
- spring datasource 注入
- Android嵌套布局时覆盖问题的解决
- 计算机操作系统进程切换详解
- DBCA创建ASM数据库时遇到ORA-01031
- Java NIO Channel
- To Do List
- Dalvik和标准Java虚拟机
- Visual C++ MFC 简明教程
- *脚本技巧小节*
- Your project contains errors,please fix them before running your application
- ctrl+z
- 局域网违反5-4-3规则导致网络不通
- virtual"构造函数 & 协变返回类