一、字符流
简介:
用于操作(读写)字符
分类:
字符输出流
字符输入流
使用字符流的原因
使用字节流来操作字符 需要将字节转换为字符 但此操作可能会产生乱码,所以使用起来比较麻烦,因此使用字符流来操作字符
字符流=字节流+编码表
注意:
任何编码表中,中文的第一个字节都是负数
常见的编码表:
ASCLL码表:
主要是包含西方国家的字符
范围 0~127
所有码表都遵循ASCLL码表的规则,在0~127中都是ASCLL码表
‘a’==97 ‘A’==65 ‘0’==48
GBK码表:
A.GBK 码表支持中文字符 大陆使用的比较少 一般是港澳地区
B.GBK 码表中 一个中文占两个字节
C.记事本(gb2312) eclipse(GBK )
D.gb2312 是GBK延伸的一种码表
UTF-8:码表:
A.在国内大部分公司都是使用UTF-8编码
B.在UTF-8码表中一个中文占三个字节
C.idea中默认的码表就是UTF-8
UNICODE码表:
A.万国码表这个码表是全世界通用的码表
B.范围: 0-65535
C.这个码表用于国际的交流
字符串的编解码:
package com.qf.test.test01;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class Test01 {
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "苏";
//将字符串转换为字节数组 按指定的编码格式
byte[] bytes = s.getBytes("utf-8");
System.out.println(Arrays.toString(bytes));
//将字节数组转换为字符串 按指定的编码格式
String s1 = new String(bytes,"utf-8");
System.out.println(s1);
//将字符串转换为字节数组 按指定的编码格式
byte[] gbks = s.getBytes("GBK");
System.out.println(Arrays.toString(gbks));
//将字节数组转换为字符串 按指定的编码格式
String s2 = new String(gbks,"GBK");
System.out.println(s2);
}
}
二、字符输出流-Writer
简介:
此类是写入字符流的抽象类
子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。 但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能
常用方法:
子类:FileWriter
三、FileWriter
简介:
A.用来写入字符文件的便捷类
B.如果需要指定操作字符编码表 可以使用 OutputStreamWriter
C.FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream