Java NIO編碼和解碼
使用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.yiibai;
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.