您的位置 首页 java

Java入门教程-IO基础和编码基础

1. IO入门

1.1. File类(掌握)

File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。

只能设置和获取文件本身的信息(文件大小,是否可读),不能设置和获取文件里面的内容。

  • Unix: 严格区分大小写,使用”/”来表示路径分隔符。
  • Windows: 默认情况下是不区分大小写的,使用””来分割目录路径。但是在 Java 中一个””表示转义,所以在Windows系统中就得使用两个”\”。

操作File常见方法:

  • String getName():获取文件名称
  • String getPath():获取文件路径
  • String getAbsolutePath():获取绝对路径
  • File getParentFile():获取上级目录文件
  • boolean exists():判断文件是否存在
  • boolean isFile() :是否是文件
  • boolean isDirectory():判断是否是目录
  • boolean delete() :删除文件
  • boolean mkdirs():创建当前目录和上级目录
  • File[] listFiles() :列出所有文件对象

文件操作demo:

列出给定目录中的全部文件的路径,包括给定目录下面的所有子目录。

1.2. 字符编码

1.2.1. 字符编码的发展历程(了解)

阶段一

计算机只认识数字,在计算机里一切数据都是以数字来表示,因为英文符号有限,所以规定使用的字节的最高位是0。每一个字节都是以0~127之间的数字来表示,比如A对应65,a对应97。此时把每一个字节按照顺序存放在一张表格中,这就是美国标准信息交换码—— ASCII 编码表。

阶段二

随着计算机在全球的普及,很多国家和地区都把自己的字符引入了计算机,比如汉字。此时发现一个字节(128个)能表示数字范围太小,而汉字太多,128个数字不能包含所有的中文汉字,那么此时就规定使用两个字节一起来表示一个汉字。

规定:原有的ASCII字符的编码保持不变,仍然使用一个字节表示,为了区别一个中文字符与两个ASCII码字符,中文字符的每个字节最高位(符号位)规定为1(中文的 二进制 是负数),该规范就是GB2312编码表。后来在GB2312码表的基础上增加了更多的中文汉字,也就出现了更强大的 GBK 码表。

阶段三

中国人是认识汉字的,现在需要和外国人通过网络交流,此时需要把把汉字信息传递给外国人,但外国的码表中没有收录汉字,此时就会把汉字显示为另一个符号甚至不能识别的乱码。为了解决各个国家因为本地化字符编码带来的影响,就干脆把全世界所有的符号统一收录进 Unicode 编码表。

如果使用Unicode码表,那么某一个字符在全世界任何地方都是固定的。比如’哥’这个字,在任何地方都是以十六进制的54E5来表示,因此说Unicode是国际统一编码。

1.2.2. 常见的字符编码和操作(了解)

常见的字符集

  • ASCII:占一个字节,只能包含128个符号。不能表示汉字。
  • ISO-8859-1:也称之为latin-1,占一个字节,收录西欧语言,不能表示汉字。
  • GB2312/GBK/GB18030:占两个字节,支持中文。
  • ANSI :占两个字节,在简体中文的操作系统中ANSI 就指的是 GBK。
  • UTF-8:是一种针对Unicode的可变长度字符编码,是Unicode的实现方式之一,支持中文。在开发中建议使用。
  • UTF-8 BOM:是微软搞出来的一种编码,不要使用。

存储字母、数字、汉字:

存储字母和数字无论是什么字符集都占1个字节.

存储汉字,GBK家族占两个字节,UTF-8家族占3个字节。

不能使用单字节的字符集(ASCII、ISO-8859-1)来存储中文,否则会乱码。

1.2.3. 字符的编码和解码操作(掌握)

数据在网络上传输是以二进制的格式,二进制格式就是 byte 数组,此时需要把信息做编码和解码处理。

  • 编码:把 字符串 转换为byte数组String—>byte[]
  • 解码:把byte数组转换为字符串byte[]—>String

注意:一定要保证编码和解码的字符相同,才能正确解码出信息。

经典案例:在表单中填写中文,为什么在服务端看到的是乱码问题。

情景分析,比如浏览器使用UTF-8编码,服务器使用ISO-8859-1编码。

此时编码和解码的字符类型不同,那么乱码就出现了。

先来分析乱码产生的原因:

乱码的解决方案:

本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。

文章来源:智云一二三科技

文章标题:Java入门教程-IO基础和编码基础

文章地址:https://www.zhihuclub.com/188364.shtml

关于作者: 智云科技

热门文章

网站地图