使用Java NIO API编码和解码操作可以从一个字符串执行到另一个字符集。两个类:CharsetEncoder和CharsetDecoder在ByteBuffer和CharBuffer之间的编码和解码中起着重要的作用。
只有当处理程序可用时,反应堆(Reactor)保持到达事件的跟踪和调度。我们来看看反应堆中执行的编码和解码操作的架构:

Java NIO中的CharsetEncoder
CharsetEncoder用于将Unicode字符编码为字节序列。它还返回一个提供任何错误信息的CoderResult对象。
Java NIO中的CharsetDecoder
CharsetDecoder用于将数组或字节序列解码为Unicode字符。在从ByteBuffer到CharBuffer的解码过程中,获得CoderResult对象。
Java NIO中的Charset.newEncoder()
在CharsetEncoder中,Charset.newEncoder()用于创建Charset对象,然后通过newEncoder()方法,可以获取CharsetEncoder对象。
Java NIO Charset.newDecoder()
在CharsetDecoder中,Charset.newDecoder()用于创建Charset对象,然后通过newDecoder()方法,可以获取一个CharsetDecoder对象。
基本编码和解码示例
package com.zaixian;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
public class CharsetExam {
public static void main(String[] args) throws CharacterCodingException {
Charset cs = Charset.forName("UTF-8");
CharsetDecoder csdecoder = cs.newDecoder();
CharsetEncoder csencoder = cs.newEncoder();
String st = "Example of Encode and Decode in Java NIO.";
ByteBuffer bb = ByteBuffer.wrap(st.getBytes());
CharBuffer cb = csdecoder.decode(bb);
ByteBuffer newbb = csencoder.encode(cb);
while (newbb.hasRemaining()) {
char ca = (char) newbb.get();
System.out.print(ca);
}
newbb.clear();
}
}
执行上面示例代码,得到以下结果 -
Example of Encode and Decode in Java NIO.
上一篇:
Java NIO字符集
下一篇:
Java NIO通道FileLock
