java总结

Channel类的常用方法

Channel可以直接将文件的部分或者全部直接映射成Buffer

注意:不能直接访问Channel中的数据,包括读取、写入都不行。Channel只能与Buffer进行交互 所有Channel不应该通过构造器来直接创建,而是通过传统的节点InputStream、OutputStream的getChannel方法来返回对应的Channel

常用的是FileInputStream、FileOutputStream的getChannel()返回的FileChannel

Channel中最常用的三个方法是map()、read()和write()

异常:java.nio.charset.MalformedInputException一般是编码转换时由于编码字符集错误导致的,可 以修改Charset中编码字符集名称解决。例如GBK、UTF-8等

map()方法将Channel对应的部分或全部数据映射成ByteBuffer

写入数据

selector

是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel通道的状态是否处于可读、可写。如 此可以实现单线程管理多个channels也就是可以管理多个网络链接。

使用Selector的好处在于: 使用更少的线程来就可以来处理通道了, 相比使用多个线程,避免了线程上 下文切换带来的开销

FileChannel不能切换为非阻塞模式,更准确的来说是因为FileChannel没有继承 SelectableChannel

多用于网络应用编程中

基本用法

1. Selector的创建。通过调用Selector.open()方法创建一个Selector对象

2. 注册Channel到Selector

 

 Channel必须是非阻塞的。

3. 轮询方式获取选择器上的状态值

 

 Chatset字符集

所有文件在底层都是二进制文件,字符文件是系统将底层的二进制序列转换为字符,这里会涉及编码 Encoder和解码Decoder

将明文的字符序列转换为计算机理解的二进制序列称为编码

将二进制序列转换为明文字符串称为解码

Charset类

availableCharsets():SortedMap 获取当前JDK所支持的所有字符集

字符串别名

GBK简体中文

ISO-8859-1拉丁文

UTF-8是8位UCS转换格式

newDecoder():CharsetDecoder获取该编码字符集对应的解码器

 decode(ByteBuffer):CharBuffer方法可以将字节序列ByteBuffer转换为CharBuffer字符序列 newEncoder():CharsetEncoder获取该编码字符集对应的编码器

encode(CharBuffer):ByteBuffer方法可以将字符序列CharBuffer转换为ByteBuffer字节序列

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值