目录
阐述
编码表的概念及常见的编码表
编码表是字符及其对应的数据组成的一张表。
常见的编码表有
ASCII:美国标准信息交换码表,用一个字节的7位表示数据
ISO-8859-1:欧洲码表,用一个字节的8位表示数据,兼容ASCII
GB2312:中文码表,兼容ASCII
GBK:中文码表升级版,融合了更多的中文文字符号,兼容ASCII
UTF-8:万国码,是一种长度可变的字符编码,用1-3个字节表示数据,兼容ASCII。用在网页上,可以统一简体或繁体中文和其他语言的显示。
String中编码和解码的问题
编码就是把字符转换成字节,编码的方法为 字符串.getByte(指定编码) ,返回字节数组。
解码是把字节转换成字符,解码和编码的方式要一致,通过指定的charset解码字节数组,构造新的String对象,格式为 new String(字节数组,指定编码)。
系统默认编码是GBK。
转换流
转换流其实就是个字符流,根据默认或指定的编码把字节流数据转换成字符流。系统默认编码是GBK。
输入:new InputStreamReader(字节输入流, 指定编码)
输出:new OutputStreamWriter(字节输出流, 指定编码)
字符缓冲区流的概述和使用
字符缓冲区流用来缓冲字符流,从而实现字符的高效读写。
new BufferReader(字符输入流)
new BufferWriter(字符输出流)
特殊方法:newLine(),作用是换行
课后作业
项目根路径下有text.txt文件,内容如下:
我爱CSDN
123456
利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中
654321
NDSC爱我
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class BufferIO {
public static void main(String[] args) throws IOException {
ArrayList<String> lineList = new ArrayList<String>();
//为了解决中文乱码问题,创建InputStreamReader关联text.txt文件并指定编码,作为创建字符流的参数
InputStreamReader isr = new InputStreamReader(new FileInputStream("text.txt"), "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
lineList.add(line);
}
br.close();
//为了解决中文乱码问题,创建OutputStreamWriter关联text.txt文件并指定编码,作为创建字符流的参数
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("text.txt"), "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
for(int i=0; i<lineList.size(); i++) {
StringBuilder sb = new StringBuilder(lineList.get(i));
String reverseLine = sb.reverse().toString();
bw.write(reverseLine);
if(i != lineList.size()-1) {
bw.newLine();
}
}
bw.close();
}
}