****Java所有对象,只认识Unicode的数据 :

即1> Unicode 基本编码(2个字节表示一个符号)。

2>存储加工的1>>utf-8,

2>>utf-16 big endian (无bom ,有bom)

3>>utf-16  little endian (无bom ,有bom)

所以当我们给别人东西时编码:可以用Unicode 基本编码,或其它几种。

所以当别人给我们东西时我只接收:Unicode 基本编码,或其它几种,如果是其它编码格式,必须在接受输入时进行转换。

查询当前系统:UTF-8格式,如果一个文件有中文和Ascii码 UTF-8  无Bom 应该最省空间。

以前整个测试发现: 严1a

1、Unicode  保存6字节

2、UTF-16 little endian 无bom  保存6字节

3、 UTF-16 Big endian 无bom 保存12 字节

4、UTF-16 little endian 有bom   保存8字节

5、UTF-16 Big endian 有bom 保存14字节

6、UTF-8 (默认有Bom)    EF BB BF E4 B8 A5 31 61  (8个字节)

7、UTF-8  无Bom                               E4 B8 A5 31 61  (5个字节)

如果让java对象做事,必须用它们所认识的语言。

目的:1》就是想打印到控制台看看,打印的对象只支持 String。

2》把byte 转换成 char,ByteBuffer 转换成 CharBuffer

一:简单描述

char: 16bits Unicode0  Unicode 2^16-1  Character

byte :8bits   -128       +127                   Byte

1、byte  :只是一个由0,1构成的 8位数

1》比方 如果取出的是ASCII码 0--127 符号,哪么这8位表示一个完整的符号。

2》取出是中文,UTF-8 :有可能3个字节或2个字节表示一个字,

2、char:就是ASCII符号没问题,哪么中文

一个字符(一个字):由几个字节构成,所以一个字符要保存3个或2个字节,表示完整的一个字。

二、建立小程序

1、建立 data3.txt 文本文件,保存编码是Unicode(上面7种都可以).因为只认识Unicode(上面7种都可以)文件,

如果不是Unicode(上面7种都可以)格式时,必须以Unicode格式输入。

2、通过java的 FileInputStream 去取-----放入ByteBuffer中。

3、得到char (Unicode 编码,到底是那种UTF-8,或UTF-16)的编码。

System.getProperty("file.encoding");:得到char的编码 ==UTF-8

4、转换  Charset.forName(encoding).decode(buff)) 。

即几个字节合并成一个字节。

package io;

import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.io.*;

public class BufferToText {
private static final int BSIZE = 1024;

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {

FileChannel fc = new FileInputStream("data3.txt").getChannel();
ByteBuffer buff = ByteBuffer.allocate(BSIZE);
 fc.read(buff);
buff.flip();

String encoding = System.getProperty("file.encoding");
//解码方式输出,表示从是UTF-8 文本文件取出来的数据,转换成char。
System.out.println("Decoded using " + encoding + ": "+ Charset.forName(encoding).decode(buff));
// Or, we could encode with something that will print:
}
}

ByteBuffer Converting CharBuffer相关推荐

  1. 学习笔记之ByteBuffer使用和实现以及文件内存映射

    转载自  学习笔记之ByteBuffer使用和实现以及文件内存映射 ByteBuffer和CharBuffer等其它Buffer的直接子类一样,顾名思义,就是存取字节的Buffer.很多数据最终在和底 ...

  2. NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  3. java nio rewind_NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  4. ByteBuffer总结

    文章目录 1.Buffer介绍 2.buffer运用 3.直接内存和堆内存写和读性能对比 1.Buffer介绍 Buffer 类是 java.nio 的构造基础.一个 Buffer 对象是固定数量的. ...

  5. JAVA基础 - BYTEBUFFER是什么?

    Buffer 类是 java.nio 的构造基础.一个 Buffer 对象是固定数量的.数据的容器,其作用是一个存储器或者分段运输区.在这里,数据可被存储并在之后用于检索.缓冲区可以被写满或释放.对于 ...

  6. ByteBuffer 详解

    文章目录 ByteBuffer 一个重要的类 ByteBuffer 类的重要组成: 初始化 常用方法说明 ByteBuffer 一个重要的类 在 java 的 NIO 当中,有一个很重要的类,就是 B ...

  7. 【NIO】学习系列(二)ByteBuffer类

    文章目录 1.介绍 2.创建非直接缓冲区与直接缓冲区 3.直接缓冲区的垃圾释放 4.直接缓冲区与非直接缓冲区的运行效率比较 5.包装Wrap数据的处理 6.put(byte b)和get()方法的使用 ...

  8. java file.io的各种使用

    File类 File可以表示一个文件的名字也可以表示某个目录下一堆文件的名字,如果是表示多个文件,那么可以使用list方法来获取他们的set集合,返回的是一系列的字符串.下面我们就来看下如何使用这个类 ...

  9. 还搞不懂 Java NIO?快来读读这篇文章!

    来自:会点代码的大叔 首先,我们需要弄清楚几个概念:同步和异步,阻塞和非阻塞. 01 同步和异步 1. 同步 进程触发 IO 操作的时候,必须亲自处理: 比如你必须亲自去银行取钱. 2. 异步 进程触 ...

最新文章

  1. Replication--镜像+复制
  2. 读书笔记_代码大全2第十章_变量初始化
  3. android模拟器电量,Android 模拟器AVD,设置电池状态
  4. scheme解释器 C语言实现,使用Scala写了个简单的Scheme解释器
  5. normalize函数_提取棋盘格角点函数解析
  6. Arduino笔记-调节呼吸灯频率实验
  7. Fatal error: Maximum function nesting level of '100' reached, aborting!
  8. c语言解析字符串报文,传递字符串数组报文和解析
  9. 使用 Grafana+collectd+InfluxDB 打造现代监控系统
  10. flume-sink
  11. python3-day2(基本回顾)
  12. window10进入“服务”的三种方式
  13. 数值计算——追赶法求解三对角方程组(附代码)
  14. R语言实现随机森林代码
  15. 售前工作过程展示4“突发事件预警信息发布平台”
  16. 拆分句子成为一个个单词,并统计各个单词的数量
  17. 子组件改变父组件的两种方式
  18. 将 MATLAB 搬到虚拟机
  19. 灰色关联分析过程及代码实现
  20. 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手

热门文章

  1. 七个不良习惯导致攻击者轻松入侵数据库
  2. [codeforces 1341B] Nastya and Door 神奇的掐头去尾+前缀和
  3. Qt Quick 渲染之 Scene Graph 详解
  4. 在CentOS下安装clickhouse
  5. platform驱动模型使用总结
  6. 微信小程序链接生成二维码weapp-qrcode
  7. 【互动赠书】第 4 期开奖,第 5 期书单(21本)
  8. 读书笔记app推荐——只为让你的生活更高效
  9. 开源框架XWIKI搭建介绍
  10. #日常---恒权码与变权码