当前位置: 首页 > wzjs >正文

山东住房城乡建设厅网站首页苏州网站建设名字

山东住房城乡建设厅网站首页,苏州网站建设名字,网站开发自我介绍代码,合肥网站建设方案案例计算机存储说明 在计算机中,任意数据都是以二进制的形式来存储的 计算机中最小的存储单元是一个字节 常用的字符集 1.ASCII字符集:基于拉丁字母的字符编码,共收录 128 个字符,用一个字节就可以存储。 2.GBK字符集:兼容…

计算机存储说明

在计算机中,任意数据都是以二进制的形式来存储的
计算机中最小的存储单元是一个字节

常用的字符集

1.ASCII字符集:基于拉丁字母的字符编码,共收录 128 个字符,用一个字节就可以存储。
2.GBK字符集:兼容ASCII并收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。windows系统默认使用的就是GBK,系统显示:ANSI。
3. Unicode字符集:国际标准字符集,又称万国码,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

计算机存储规则

ASCII字符集存储规则

GBK字符集存储规则

英文

中文 

细节:

根据GBK编码规则,英文的码都是0开头且占一个字节,汉字的码一定以1开头且占两个字节

所以看到0开头的一个字节表示英文,看到1开头的两个字节表示汉字

例如:

01100001  10011011  00010000  01100100

英文           汉字                            英文

Unicode字符集存储规则

UTF-8是Unicode字符集存储规则中的一种,最常使用

UTF-8编码规则

用1-4个字节存储数据,其中ASCII码表上的符号用1个字节,简体中文用3个字节。

UTF-8编码固定格式
0XXXXXASCII码表上的符号
1110XXXX 10XXXXXX 10XXXXXX简体中文

其中红色部分是固定的,X部分根据不同字符对应不同数字的二进制进行填入

英文 

中文 

如何设定想要使用的字符集

Java中编码的方法

String类中的方法说明
byte[] getBytes()使用默认方式进行编码
byte[] getBytes(String charsetName)使用指定方式进行编码

Java中解码的方法

String类中的方法说明
new String(byte[] bytes)使用默认方式进行解码
new String(byte[] bytes,string charsetName)使用指定方式进行解码

代码演示

import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class Test1 {public static void main(String[] args) throws UnsupportedEncodingException {String str1 = new String("ai爱");//进行编码//idea默认使用UTF-8,英文占1个字节,中文占3个字节//所以字节数组应该有5个数据byte[] b1 = str1.getBytes();System.out.println(Arrays.toString(b1));//[97, 105, -25, -120, -79]//传参使用GBK,英文占1个字节,中文占2个字节//所以字节数组应该有4个数据byte[] b2 = str1.getBytes("GBK");System.out.println(Arrays.toString(b2));//[97, 105, -80, -82]//进行解码//用什么字符集编码就要用什么字符集解码,否则会出现乱码//默认UTF-8编码,默认UTF-8解码String str2 = new String(b1);System.out.println(str2);//ai爱//传参使用GBK编码,传参使用GBK解码String str3 = new String(b2, "GBK");System.out.println(str3);//ai爱}
}

字节流的局限性

字节流一次只能读取一个字节,而中文是用多个字节表示的,所以使用字节流读取中文时会出现乱码,因此需要使用字符流

字符流

字符流的底层其实就是字节流
字符流 = 字节流 + 字符集
特点:
字符输入流:一次读一个字节,遇到中文时,一次读多个字节
字符输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中
使用场景:
对于纯文本文件进行读写操作

字符流的实现类

操作本地文件的字符输入流FileReader

创建字符输入流对象
构造方法说明
public FileReader(File file)创建字符输入流关联本地文件
public FileReader(String pathname)创建字符输入流关联本地文件

细节:如果文件不存在,就直接报错。 

读取数据
成员方法说明
public int read()读取数据,读到末尾返回-1
public int read(char[] buffer)读取多个数据,读到末尾返回-1

read()细节:
read()默认一个字节一个字节读取,如果遇到中文就会一次读取多个字节
在读取之后,方法的底层还会进行解码并转成十进制,最终把这个十进制作为返回值返回
这个十进制的数据表示该字符在字符集上对应的数字

例如:

英文:文件里面二进制数据0110 0001,read方法进行读取,解码并转成十进制97
中文:文件里面的二进制数据11100110 10110001 10001001,read方法进行读取,解码并转成十进制27721
再把这些十进制数据进行char强转就能看到对应的字符了

read(char[])细节:

返回的int类型的数据是读取到的字符个数

底层将读取数据,解码,强转三步合并了,把强转之后的字符存放到了传递的char数组当中

释放资源
成员方法说明
public int close()释放资源/关流 
代码演示

读取本模块下

import java.io.FileReader;
import java.io.IOException;public class Test2 {public static void main(String[] args) throws IOException {FileReader fr = new FileReader("day04\\a.txt");int b;/*while ((b = fr.read()) != -1) {System.out.print(b + " ");}//20320 22909 74 97 118 97 21704 21704 */while ((b = fr.read()) != -1) {System.out.print((char) b + " ");}//你 好 J a v a 哈 哈 fr.close();}
}
import java.io.FileReader;
import java.io.IOException;public class Test3 {public static void main(String[] args) throws IOException {FileReader fr = new FileReader("day04\\a.txt");int len;char[] ch = new char[3];while ((len = fr.read(ch)) != -1) {String str = new String(ch, 0, len);System.out.println(len + " " + str);}//3 你好J//3 ava//2 哈哈fr.close();}
}

操作本地文件的字符输出流FileWriter

创建字符输出流对象
构造方法说明
public FileWriter(File file)创建字符输出流关联本地文件
public FileWriter(String pathname)创建字符输出流关联本地文件
public FileWriter(File file, boolean append)创建字符输出流关联本地文件,是否续写
public FileWriter(String pathname, boolean append)创建字符输出流关联本地文件,是否续写

细节1:参数是字符串表示的路径或者File对象
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

写数据
成员方法说明
void write(int c)写出一个字符
void write(String str)写出一个字符串
void write(String str, int off, int len)写出一个字符串的一部分
void write(char[] cbuf)写出一个字符数组
void write(char[] cbuf, int off, int len)写出字符数组的一部分

细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符

释放资源
成员方法说明
public int close()释放资源/关流 

细节:每次使用完流之后都要释放资源 

代码演示
import java.io.FileWriter;
import java.io.IOException;public class Test4 {public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("day04\\a.txt");fw.write(97);fw.write("你好");char[] ch = {'a','i','爱'};fw.write(ch);fw.close();}
}

缓冲区

与FileInputStream和FileOutputStream不同的是,FileReader和FileWriter底层具有缓冲区

创建FileReader和FileWriter对象
底层:关联文件,并创建缓冲区(长度为8192的字节数组)

注:FileReader和FileWriter的缓冲区不是同一个,各自使用各自的缓冲区

读数据FileReader

底层:

判断缓冲区中是否有数据可以读取
缓冲区没有数据:就从文件中获取数据,装到缓冲区中,每次尽可能装满缓冲区,如果文件中也没有数据了,返回-1
缓冲区有数据:就从缓冲区中读取。

写数据FileWriter

底层:

数据会先装到缓冲区中,缓冲区数据装满时,调用flush方法刷新时,调用close方法关流时,会将缓冲区中的数据加载到文件中

flush刷新:刷新之后,还可以继续往文件中写出数据
close关流: 断开通道,无法再往文件中写出数据


文章转载自:

http://me8SrVIH.qjrjs.cn
http://d1sC9X9s.qjrjs.cn
http://TnsPyBcC.qjrjs.cn
http://Bb6fEQSP.qjrjs.cn
http://oF0fJK0c.qjrjs.cn
http://178I9CyD.qjrjs.cn
http://xuNGiaR1.qjrjs.cn
http://uuCAKYdm.qjrjs.cn
http://lF0Z4YAb.qjrjs.cn
http://YXx6fEtZ.qjrjs.cn
http://tRxLypcW.qjrjs.cn
http://BeRCdyTh.qjrjs.cn
http://pMvoml2t.qjrjs.cn
http://48tuUY05.qjrjs.cn
http://ZPYoMCOa.qjrjs.cn
http://31ZkgbtQ.qjrjs.cn
http://nteeQ3F1.qjrjs.cn
http://dIdpuN68.qjrjs.cn
http://UWY15Ra9.qjrjs.cn
http://eK3oBiBa.qjrjs.cn
http://oBc4ZdlL.qjrjs.cn
http://Is2L89Fw.qjrjs.cn
http://A8iReFJB.qjrjs.cn
http://zZ92zV3p.qjrjs.cn
http://FzMYJYED.qjrjs.cn
http://4Ak3RfOp.qjrjs.cn
http://yfczlp4b.qjrjs.cn
http://hBhYk9Ik.qjrjs.cn
http://OObhES5O.qjrjs.cn
http://S5RfKNxy.qjrjs.cn
http://www.dtcms.com/wzjs/745928.html

相关文章:

  • 外国网页设计网站怎么制作自己公司网站
  • 网站推广的方式手段有哪些关键词全网搜索工具
  • 中国轻工建设公司网站wordpress改变友情链接顺序
  • 掼蛋网站建设建设境外网站需要什么手续
  • 网站空间制作网站访问很慢
  • 做外贸现在一般都通过哪些网站转做海外买手的网站
  • 建设科技处网站网站开发需要python 吗
  • wordpress用户密码 破解网站优化托管方案文库
  • 网站建设推介官方网站哪家做的最好
  • 织梦网站首页错位注销公司需要什么资料和流程
  • 东莞网站建设 石化携程网站 建设平台分析
  • 海曙区住房和建设局网站深圳做网站排名价格
  • 二手房中介网站建设个人微信公共号可以做微网站么
  • gov域名网站有哪些网站收费系统平台
  • 网站运营岗位职责描述东营网站建设推广
  • 代刷开通建设网站移动端开发工程师
  • 个人网站logo需要备案吗公司网站域名怎么注册
  • 桂林象鼻山成因包头网站优化
  • 佛山网站建设怎样做包头网站设计
  • 行业门户网站推广国际知名设计公司有哪些
  • iis网站配置教程淘宝建设网站首页
  • 外贸网站制作教程重庆关键词排名推广
  • 新时代文明实践站模板制作网页的工具软件
  • 大型网站建设推广福州seo按天扣费
  • 个人建设网站要钱吗短链接生成网址
  • wordpress会员网站怎么开发网页游戏
  • 海南建设银行官方网站网站建设维护公司排名
  • 做美容有哪些网站2022最近比较火的热点话题
  • 单页网站下载263企业邮箱app下载
  • 做网站公司怎么找客户沈阳男科医院在哪里