缓冲区(Buffer):
一,在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据 根据数据类型不同(boolean 除外),提供了相应类型的缓冲区:
ByteBuffer
CharBuffer
ShortBuffer
IntBuffer
LongBuffer
FloatBuffer
DoubleBuffer 上述缓冲区的管理方式几乎一致,通过 allocate() 获取缓冲区 二、缓冲区存取数据的两个核心方法:
put() : 存入数据到缓冲区中
get() : 获取缓冲区中的数据 三、缓冲区中的四个核心属性:
capacity : 容量,表示缓冲区中最大存储数据的容量。一旦声明不能改变。
limit : 界限,表示缓冲区中可以操作数据的大小。(limit 后数据不能进行读写)
position : 位置,表示缓冲区中正在操作数据的位置。 mark : 标记,表示记录当前 position 的位置。可以通过 reset() 恢复到 mark 的位置 0 <= mark <= position <= limit <= capacity 四、直接缓冲区与非直接缓冲区:
非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中
直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率
通道(Channel):
一、用于源节点与目标节点的连接。在 Java NIO 中负责缓冲区中数据的传输。Channel 本身不存储数据,因此需要配合缓冲区进行传输。
二、通道的主要实现类
java.nio.channels.Channel 接口:
|--FileChannel
|--SocketChannel
|--ServerSocketChannel
|--DatagramChannel 三、获取通道
1. Java 针对支持通道的类提供了 getChannel() 方法
本地 IO:
FileInputStream/FileOutputStream
RandomAccessFile 网络IO:
Socket
ServerSocket
DatagramSocket 2. 在 JDK 1.7 中的 NIO.2 针对各个通道提供了静态方法 open()
3. 在 JDK 1.7 中的 NIO.2 的 Files 工具类的 newByteChannel() 四、通道之间的数据传输
transferFrom()
transferTo() 五、分散(Scatter)与聚集(Gather)
分散读取(Scattering Reads):将通道中的数据分散到多个缓冲区中
聚集写入(Gathering Writes):将多个缓冲区中的数据聚集到通道中 六、字符集:Charset
编码:字符串 -> 字节数组
解码:字节数组 -> 字符串
												

最新文章

  1. css样式之border
  2. windows多线程编程星球(一)
  3. PS快捷键
  4. C语言程序设计第一次作业
  5. JAVA中的NIO(二)
  6. iPhone socket 编程之BSD Socket篇
  7. POJ3189 Steady Cow Assignment(最大流)
  8. HDU 1074 (状态压缩DP)
  9. Mybatis like 模糊查询问题
  10. MFC程序中消息以及函数的处理顺序简介[转]
  11. 使用CSS、JS的几种方法
  12. 编译预处理 -- 带参数的宏定义--【sky原创】
  13. js时间戳格式化成日期格式
  14. 如何快速的学习selenium工具
  15. JVM菜鸟进阶高手之路三
  16. python_flask框架学习之路(1)
  17. Android 一些关于 Activity 的技巧
  18. MSP430入门准备
  19. 762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  20. [每天解决一问题系列 - 0005] WiX Burn 如何校验chained package的合法性

热门文章

  1. 在网页浏览器中原生显示PDF文件
  2. shell中如何取括号中的字符
  3. IntelliJ IDEA 注册码失效
  4. axios 请求参数配置说明
  5. 解决 jersey 单jar包 IME media type text/plain was not found.
  6. el表达式 多条件判断
  7. rabbitmq vhost
  8. cpuinfo详解
  9. 转:eclipse里面显示中文乱码
  10. PmExceptionMapper.xml 20160712