文件的上传与下载(一)

1. 字节与字符区别

字节 是存储容量的基本单位
字符 是数字,字母,汉字以及其他语言的各种符号。一个字符由一个字节或多个字节的二进制单位组成 。

1字节=8个二进制单位:

不同的编码下不同的字节数

“字”在 GBK 编码下占 2 字节,在 UTF-16 编码下也占 2 字节,在 UTF-8 编码下占 3 字节,在 UTF-32 编码下占 4 字节。

java是双字节编码utf-16be,一个中文两个字节,一个英文两个字节

详细参考 : 字符与字节有什么区别

2.将字符串转换成字节序列

 String s = "慕课12"
 byte[] bytes1 = s.getBytes();
for (byte bytes:bytes1){
     //将字节(转换成int)以16进制的方式显示
     System.out.println(Integer.toHexString(bytes & 0xff)+"");
}

//结果显示:
20
c4
bd
bf
ce

3. 计算某文字的字节序列的长度

`new String("2").getBytes().length`:根据结果判断当前的编码格式
`new String("2").getBytes("gbk").length`:按gbk计算字节数

出现unhandled Exception时在方法上抛出异常即可,或try/catch包围

4. 将字节序列转为字符串

当你的字节序列是某种编码时,若此时想把字节序列变成字符串,也需要用这种编码格式,否则会出现乱码。(字节序列与字符串的编码格式需要保持一致)

String s = "慕课12"
byte[] bytes1 = s.getBytes();
`new String(bytes1)`:按项目编码格式
`new String(bytes1,"gbk")`:按gbk将字节序列
转为字符串

String str2 = new String(bytes1,"utf-16");//使用utf-16

文本文件就是字节序列,可以是任意编码的字节序列,
如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码,复制的话机器都认识。

代码参考demo1-1

你可能感兴趣的:(file)