- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20-字符流转换流编码解码
字符流、转换流、编码解码字符流字符流介绍数据在硬盘上肯定是以二进制形式保存。但是有些二进制数据和在一起,可以表示我们生活中的一些字符数据。如果我们使用的字节流读取这些数据,只能读取到每个单个的字节数据,并不能知道这些字节数据具体对应的字符数据是什么?Java中基于字节流的基础,给我们提供了字符流,使用字符流可以直接从文件中读取数据,然后显示对应的字符内容。字符流:字符输入流:Reader:字符输入流的超类FileReader:专门负责从字符文件中读取字符数据字符输出流:Writer:字符输出流的超类FileWriter:专门负责将字符数据写到 文件中。编码表介绍数据存储的方式是二进制。而真正读写数据的时候肯定是以二进制(字节)方式读取。字符流读写数据的时候,其实在字符流的底层依然使用的字节流。使用字节流将数据读取到字符流中,然后在字符流中将字节根据一定的规律转成字符数据。最后开发者就可以看到对应的字符。将生活中的数据和计算机能够识别的二进制进行了一一对应。老美他们的文字:字符 十进制二进制A6501000001B 6601000010....a9701100001.....上述的这个表,就反应了生活中的数据和计算机中的数据的对应关系,这张表被称为编码表。它也在全球被称为ASCII(国际信息交易码)码表。欧洲的的文字对应的编码表:ISO-8859-1 :拉丁文编码表。这个编码表兼容ASCII。不管ASCII表还是ISO-8859-1,它们都规定使用一个字节表示生活中的字符数据。ASCII:0xxx xxxx 表示老美的文字ISO-8859-1:1xxx xxxx 或者 0xxx xxxx 表示拉丁文编码表中国的文字:GB2312:国标码,它可以识别六千到七千的文字。GBK:它可以识别两万多文字(主流编码表)GB18030:它识别更多的文字。计算机协会组织:就指定了兼容全球大部分字符的编码表:unicode:它采用的是2个字节表示一个字符(JDK内置的编码表)。升级:UTF-8:能够使用一个字节编码的字符,就采用一个字节。能够使用2个字节编码的字符,就采用2个字节。能够使用3个字节编码的字符,就采用3个字节。必须记住的编码表:GBK:中国ASCII:美国ISO-8859-1:拉丁文UTF-8:国际通用编码表能够识别中文的编码表:GBK、GB2312、UTF-8。字符输出流Writer它是字符输出流的超类。Writer中的write方法主要是将字符数据写出。文件字符输出流用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriterFileWriter:它不是Writer的直接子类。而FileWriter它可以方便的将字符数据写到文件中。如果我们使用FileWriter将字符数据写到文件中的过程中:其实在FileWriter的底层,它会借助当前操作系统默认的编码表,将字符数据转成字节数据。转换的过程:先获取到需要写出的字符数据,紧接着根据默认的编码表查询到字符对应的数字(编码值),将这个编码值转成二进制数据。将转后的二进制数据存储在FileWriter自己内部维护的一个字节缓冲区中。当我们关闭FileWriter或者调用flush方法的时候,才会将缓冲区中的数据写到底层文件中。使用FileWriter写出数据的时候,数据会被转成二进制存储在FileWriter内部维护的那个字节缓冲区中。我们需要调用flush或者关流,才能将数据真正的写到文件中。flush和close的区别:flush:它是刷新缓冲区的,目的是将缓冲区中的有效数据写到底层文件中。close:它是关闭流对象,断开流和文件之间的关联,但是在断开之前,会先调用flush刷新缓冲区。flush仅仅是刷新缓冲区中,刷新结束之后,流对象依然可以使用。close是关闭流,关闭之后就无法再使用当这个流写数据。/* * 演示字符输出流 */public class FileWriterDemo {public static void main(String[] args)throws IOException {method2();}//写出数据public static void method2() throws IOException {// 创建输出流对象FileWriter fw = new FileWriter(d:/fw.txt);for( int i = 1 ; i 65535 ; i++){fw.write(i);}fw.close();}//演示write方法public static void method() t
原创力文档


文档评论(0)