# Java NIO Tutorial

## Java NIO
Java NIO基本组件如下：

![NIO-Components](https://s0.wailian.download/2018/09/07/NIO-Components.png)

## NIO Components

## NIO Package

## NIO vs. IO
Java IO和NIO之间的主要区别：

IO | NIO
------|------
基于阻塞I/O操作 | 基于非阻塞I/O操作
面向流的 | 面向缓存的
通道不可用 | 通道可用于非阻塞I/O操作
选择器不可用 | 选择器可用于非阻塞I/O操作

通道和流之间的主要区别是：
- 流可以用于单向数据传输
- 通道提供双向数据传输

## NIO Channels
- `ChannelDemo`

## NIO Buffers
- `BufferedReaderDemo`

## NIO Scatter/Gather
- `ScatterGatherIO`

## NIO Data Transfer
- `TransferDemo`

## NIO Selector
- `SelectorExample`
- `Client`

## NIO SocketChannel

## NIO ServerSocketChannel

## NIO Pipe
- `PipeExample`

## NIO CharSet
- `CharsetExample`

## NIO Encode/Decode
- `CharsetExam`

## NIO Channels FileLock
- `FileLockExample`
- `PrintFile`

## References
- [Java NIO教程](https://www.yiibai.com/java_nio/)
- [Java NIO Tutorial](https://www.javatpoint.com/java-nio)