Java中使用unicode编码,各操作系统有自己的默认编码,如果我们要将随机数写到文件中必须将其转化成某种编码格式的字符串,我们选择系统的默认 字符集,然后将其写入:private void gernate() {
File file = new File(FILE_PATH);
FileOutputStream fos = null;
FileChannel channel = null;
ByteBuffer byteBuffer = ByteBuffer.allocate(SIZE);
String tem = null;
byte[] bytes = null;
long begin = System.currentTimeMillis();
long end = 0;
int num = 0;
try {
log.info("begin:" + begin);
fos = new FileOutputStream(file);
channel = fos.getChannel();
Random random = new Random();
for (int i = 0; i < MAX_NUM; i++) {
num = random.nextInt(MAX_NUM);
tem = String.valueOf(num);
tem += i < MAX_NUM - 1 ? "中普朗克y" : "";
bytes = tem.getBytes();
if (byteBuffer.remaining() < bytes.length) {
byteBuffer.flip();
channel.write(byteBuffer);
byteBuffer.clear();
}
byteBuffer.put(bytes);
}
byteBuffer.flip();
channel.write(byteBuffer);
fos.close();
end = System.currentTimeMillis();
log.info("end:" + end + ",use :" + (end - begin));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这里需要注意的是String.getBytes()方法,将unicode字符转化成系统的默认字符序列。
对于写入的文件解码问题:我们使用CharsetDecoder,完全相反的操作,解码器在其中保存一定的状态,对于解码会返回结果状态:
public void count() {
File file = new File(FILE_PATH);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
FileChannel channel = fis.getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(5);
CharBuffer charBuffer=CharBuffer.allocate(57);
Charset charset=Charset.defaultCharset();
CharsetDecoder decoder = charset.newDecoder();
CoderResult decodeResult=CoderResult.OVERFLOW;
while(channel.read(byteBuffer)!=-1){
byteBuffer.flip();
while(decodeResult==CoderResult.OVERFLOW){
decodeResult = decoder.decode(byteBuffer, charBuffer, false);
System.out.println(decodeResult);
charBuffer.flip();
System.out.print(charBuffer.toString());
charBuffer.clear();
}
if(decodeResult==CoderResult.UNDERFLOW){
byteBuffer.compact();
decodeResult=CoderResult.OVERFLOW;
}
}
System.out.println();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
java的TLV包的编码和解码,能够对Tag Length Value对应的值进行编码和解码。包内包含jar包和源码包,还有一个java写的带有详细注释的Demo
如果不能用 倒贴10分 或者联系我 yaoxingjie@163.com 二维码编码解码java版本 QR 二维码 java 编码 解码 jar
java二维码编码解码测试 java QRCoder 二维码 编码 解码 java QRCoder 二维码 编码 解码
主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
本程序利用Java实现以下功能: 1、读取一行或多行数据,统计出现的所有字母的出现次数 2、构造huffman树 3、生成出现字母的编码表 4、对输入的数据进行...5、输入编码结果,对编码结果进行解码,得到原来的输入数据。
Base64 编码解码 Java ,Java对字符串Base64 编码解码的方法!!
我在网上找了半天的java、js的base64编码解码结果没有,只好自己写了,js一个文件,java一个文件,调用里面是使用方法
Java实现二维码QRCode的编码和解码
二维码 java android 编码 解码 jar QRcode PDF417
一个与Escape编码 解码相关的Java实例代码,其实是一个解码编码类,里面就一个文件。关于解码的说明:本方法保证 不论参数s是否经过escape()编码,均能得到正确的“解码”结果,编码的过程请大家下载源代码查看,本...
Java文本字符编码解码操作类 Escape.java源代码 说明:本方法保证 不论参数s是否经过escape()编码,均能得到正确的“解码”结果。
java哈夫曼树的编码解码
huffman的java实现 码表生成程序 可对任意“.txt”文件进行概率统计,显示字符及其概率对照表; 依概率编制Huffman码表,显示字符、对应概率及码字对照表。 编码程序 使用码表,对任意“.txt”进行Huffman编码; ...
主要介绍了Java基于Base64实现编码解码图片文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
此工具为Base64 编码解码工具, 需要Java运行环境,所以是实用于Java开发人员需要临时进行Base64编码的处理。
主要介绍了java 使用 URLDecoder 和 URLEncoder 对中文字符进行编码和解码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
短信PDU编码,直接填入接收者号码,及短信内容可生成PDU编码 短信PDU解码,可解析接收到的编码格式为PDU的短信内容
Java中常用的关于编码解码方法 jsp页面与编码有关的代码
Base64 编码 解码 java 源代码 encode decode