Java 输入字符流

常见的码表如下:
ASCII: 美国标准信息交换码。用一个字节的7位可以表示。
ISO8859-1: 拉丁码表。欧洲码表,用一个字节的8位表示。又称Latin-1(拉丁编码)或“西欧语言”。ASCII码是包含的仅仅是英文字母,并且没有完全占满256个编码位置,所以它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入192个字母及符号, 藉以供使用变音符号的拉丁字母语言使用。从而支持德文,法文等。因而它依然是一个单字节编码,只是比ASCII更全面。

GB2312: 中国的中文编码表。
GBK: 中国的中文编码表升级,融合了更多的中文文字符号。
Unicode: 国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode。
UTF-8: 最多用三个字节来表示一个字符。
(我们以后接触最多的是iso8859-1、gbk、utf-8)

查看上述码表后,很显然中文的‘中’在iso8859-1中是没有对映的编码的。或者一个字符在2中码表中对应的编码不同,例如有一些字在不同的编码中是有交集的,例如bjg5 和gbk 中的汉字简体和繁体可能是一样的,就是有交集,但是在各自码表中的数字不一样。

字节流:字节流读取的是文件中的二进制数据,读到的数据并不会帮你转换成你看得懂的字符。
字符流: 字符流会把读取到的二进制的数据进行对应 的编码与解码工作。 字符流 = 字节流 + 编码(解码)
输入字符流:
----------| Reader 输入字符流的基类 抽象类
-------------| FileReader 读取文件的输入字符流。
FileReader的用法:

  1. 找到目标文件
  2. 建立数据的输入通道
  3. 读取数据
  4. 关闭资源
// 使用缓冲字符数组读取文件。   效率高
 public static void readTest2() throws IOException {
  	// 找到目标文件
  	File file = new File("D:\\Java\\testFile\\假如生活重新开头.txt");
  	// 建立数据的输入通道
  	FileReader fileReader = new FileReader(file);
  	// 建立缓冲字符数组读取文件数据
  	char[] buf = new char[1024*1024];
  	int length = 0;
  	while ((length = fileReader.read(buf)) != -1) {
   		System.out.print(new String(buf, 0, length));
  	}
 }

 public static void readTest1() throws IOException {
  	// 找到目标文件
  	File file = new File("D:\\Java\\testFile\\aa.txt");
  	// 建立数据的输入通道
  	FileReader fileReader = new FileReader(file);
  	int content = 0;
  	while ((content = fileReader.read()) != -1) { // 每次只会读取一个字符,效率低。
	   System.out.print((char) content);
  	}
  	// 关闭资源
  	fileReader.close();
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值