java基础学习_IO流03_字符流、IO流小结、案例_day21总结
=============================================================================
=============================================================================
涉及到的知识点有:
1:字符流(掌握)
(1)转换流出现的原因及作用
(2)转换流其实是一个字符流。
(3)编码表
A:编码表的概述
B:常见的编码表
C:字符串中的编码问题
(4)IO流中的编码问题
(5)字符转换流的5种写数据的方式
(6)字符转换流的2种读数据的方式
(7)面试题
(8)字符转换流(= 字符流 = 转换流) ==> 字符转换简化流 ==> 字符流
(9)字符缓冲区流
(10)字符流
2:IO流小结(掌握)
3:案例(掌握)
A:复制文本文件(用字符流) 5种方式(掌握)
B:复制图片/视频/音频(用字节流) 4种方式(掌握)
C:把ArrayList集合中的数据存储到文本文件
D:从文本文件中读取数据(每一行为一个字符串数据)到ArrayList集合中,并遍历集合
E:我有一个文本文件中存储了几个名字,请大家写一个程序实现随机获取一个人的名字。
F:复制指定单级文件夹中的所有文件(里面只有文件,且文件各种各样)
G:复制指定单级文件夹中的指定的文件,并修改文件后缀名(里面只有文件,且文件各种各样,但是本例题为了增加一点难度,使该单级文件夹中增加一个文件夹名为hello.java的文件夹)
H:复制多级文件夹
I:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件。
J:已知在s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”,请编写程序读取s.txt文件的数据内容,把读取到的数据排序后写入到ss.txt中。
K:用Reader来模拟BufferedReader的特有功能readLine()
L:用自定义类来模拟LineNumberReader的特有功能getLineNumber()和setLineNumber()
=============================================================================
=============================================================================
1:字符流(掌握)
(1)转换流出现的原因及作用
转换流出现的原因:字节流操作中文数据不是特别的方便,所以,java就提供了转换流。
转换流的作用:就是把字节流转换字符流来使用。
(2)转换流其实是一个字符流。
字符流 = 字节流 + 编码表
---------------------------------------
(3)编码表
A:编码表的概述
就是由现实世界的字符和对应的数值组成的一张表。
B:常见的编码表
ASCII:美国标准信息交换码。
用一个字节的7位表示(最高位为符号位,其余位为数值位)。
Unicode:国际标准码,融合了多种文字。
所有文字都用两个字节来表示,Java语言使用的就是Unicode编码。
ISO-8859-1:拉丁码表。欧洲码表。
用一个字节的8位表示。
GB2312:中国的中文编码表。(简体中文)
GBK:中国的中文编码表升级,融合了更多的中文文字符号。(简体中文)
GB18030:GBK的取代版本。(简体中文)
BIG5:通用于中国台湾、中国香港地区的一个繁体字编码方案,俗称“大五码”。
UTF-8:最多用三个字节来表示一个字符。
UTF-8不同,它定义了一种“区间规则”,这种规则可以和ASCII编码保持最大程度的兼容:
它将Unicode编码为 00000000-0000007F 的字符,用单个字节来表示;
它将Unicode编码为 00000080-000007FF 的字符,用两个字节表示;
它将Unicode编码为 00000800-0000FFFF 的字符,用三个字节表示。
C:字符串中的编码问题
String类的构造方法:
public String(byte[] bytes, String charsetName) 通过指定的字符集解码字节数组
String类的成员方法:
public byte[] getBytes(String charsetName) 使用指定的字符集合把字符串编码为字节数组
编码:把看得懂的变成看不懂的
String --> byte[]
解码:把看不懂的变成看得懂的
byte[] --> String