使用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