笔记:I/O流-字符集

Java
库的
java.nio
包用
Charset
类统一了对字符集的转换,支付姐建立了两个字节Unicode码元序列与使用本地字符编码方式的字节序列之间的映射,Charset类使用的时由IANA字符集注册中心标准化的字符集名称,为了兼容其他的命名惯例,每个字符集都可以拥有许多别名,可以调用
aliases
方法返回由别名构成的
Set
对象,示例代码如下:

Charset charset = Charset.forName("utf-8");

????????????????System.out.println("utf-8 charset");

????????????????Set<String> aliases = charset.aliases();

????????????????for (String a : aliases) {

????????????????????????System.out.println("aliase is " + a);

????????????????}

为了确定在某个特定实现中哪些字符集是可用的,可以调用静态方法
avaliableCharsets
方法,示例代码如下:

Map<String, Charset> charsetMap = Charset.availableCharsets();

?????????for (String c : charsetMap.keySet()) {

?????????????
System.out.println(c);

???????
}

如果某个字符不能被字符集表示,他将被转换为?,一旦有了字符集就可以使用他在包含Unicode码元的Java
字符串和编码而成的字节序列之间进行转换,下面是如何编码Java
字符串的代码:

????????String str = "受到法律框架dsfjkl23";

????????// 编码字符串到Byte数组

????????ByteBuffer buffer = charset.encode(str);

???????
byte[] bytes = buffer.array();

????????for (byte b : bytes) {

???????????????System.out.print(Integer.toHexString(b & 0xff) + " ");

????????}

???????
System.out.println();

????????// 将Byte数组解码为字符串

????????ByteBuffer decodeBuffer = ByteBuffer.wrap(bytes);

????????CharBuffer charBuffer = charset.decode(decodeBuffer);

????????System.out.println(charBuffer.toString());

?
?

时间: 2024-08-06 18:07:28

笔记:I/O流-字符集的相关文章

[笔记] 网络流-最大流 POJ-1273\HDU-4240

[1] POJ-1273 题目:http://poj.org/problem?id=1273 最直接的最大流问题,用了Ford-Fulkerson方法,DFS随机搜索增广路. 算法原理参考:http://blog.csdn.net/smartxxyx/article/details/9293665 /************************ POJ-1273* Ford-Fulkerson***********************/#include <stdio.h> #inclu

黑马程序员--Java基础学习笔记【IO流-字节流、转换流】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO 流 常用基类 字节流 InputStreamOutputStream 常用方法 int read() // 读取一个字节,以 int 形式返回 intread(byte[] b) // 读取最多数组长度个字节并存入该数组,返回实际读取字节 void write(int d) // 写出一个字节 voidwrite(byte[] d) // 将给定字节数组中的所有字节全部写出 void w

java学习笔记16--I/O流和文件

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中 输入/输出流可以从以下几个方面进行分类 从流的方向划分: 输入流.输出流 从流的分工划分: 节点流.处理流 从流的内容划分: 面向字符的流.面向字节的流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对

JavaSE 学习笔记之IO流(二十二)

IO流:用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节流和字符流. 字节流:处理字节数据的流对象.设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的.二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节.意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据. 那么为什么要有字符流呢?因为字符每个国

MQTT协议笔记之消息流

前言 前面的笔记已把所有消息类型都过了一遍,这里从消息流的角度尝试解读一下. 网络故障 在任何网络环境下,都会出现一方连接失败,比如离开公司大门那一刻没有了WIFI信号.但持续连接的另一端-服务器可能不能立即知道对方已断开.类似网络异常情况,都有可能在消息发送的过程中出现,消息发送出去,就丢失了. MQTT协议假定客户端和服务器端稳定情况一般,彼此之通信管道不可靠,一旦客户端网络断开,情况就会很严重,很难恢复原状. 但别忘记,很多客户端会有永久性存储设备支持,比如闪存ROM.存储卡等,在通信出现

Java笔记:Java 流(Stream)、文件(File)和IO

更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. 输入输出流 简介 一个流被定义为一个数据序列.输入流用于从源读取数据,输出流用于向目标写数据. 下图是一个描述输入流和输出流的类层次图: 在java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作. 在字节流中输出数据主要是使用

C++学习笔记55:流类库与输入输出

I/O流的概念及流类库的结构 程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象,文件对象. 流是一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动: 流对象与文件操作 程序建立一个流对象 指定这个流对象与某个文件对象建立连接 程序操作流对象 流对象通过文件系统对所连接的文件对象产生作用 提取与插入 读操作在流数据抽象中被称为从流中提取: 写操作被称为向流中写入: 最重要的三个输出流:ostream ofstream ostringstr

java基础学习笔记之IO流

1.IO流用来处理设备之间的数据传输方向:硬盘通过“读reader”完成对内存的读取,内存通过“写writer”完成对硬盘的写入2.Java对数据的操作是通过流的方式3.Java用于操作流的对象都在IO包中4.流按操作数据分为两种:字节流和字符流--字符流的由来:>>字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.再对这个文字进行操作.简单说:字符流=字节流+编码表--字节流的两个顶层父类:1.InputStream 2.OutputStream--字符流的两个顶层父

c++学习笔记:文件流的各种操作

欲使用ifstream和ofstream,首先需要引用fstream #include <fstream> 一.使用ifstream读取文件的全部文本 ifstream ifs; string path("src/test.txt");//考虑到最终程序最终执行环境是在工程目录下的,所以这里用此路径 ifs.open(path);//open可以传第二个参数,六个值in:以读方式打开:out:以写方式打开,直接写入将覆盖,但是可以移动指针,在文件末尾写入:binary:操作