Java NIO编码和解码

使用Java NIO API编码和解码操作可以从一个字符串执行到另一个字符集。两个类:CharsetEncoderCharsetDecoderByteBufferCharBuffer之间的编码和解码中起着重要的作用。

只有当处理程序可用时,反应堆(Reactor)保持到达事件的跟踪和调度。我们来看看反应堆中执行的编码和解码操作的架构:

Java NIO中的CharsetEncoder

CharsetEncoder用于将Unicode字符编码为字节序列。它还返回一个提供任何错误信息的CoderResult对象。

Java NIO中的CharsetDecoder

CharsetDecoder用于将数组或字节序列解码为Unicode字符。在从ByteBufferCharBuffer的解码过程中,获得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