---恢复内容开始---

我们知道,在用户端和服务端之间存在一个数据传输的问题,例如下载个电影、上传个照片、发一条讯息。在这里我们

就说一下文件的传输。

1.文件编码

   相信大家小时候玩过积木(没玩过也看过吧),看到一个积木房子,很漂亮,买下来了,那要怎么拿回家呢,当然是

   先把积木房子打散,装到袋子里,拿回家后再拼起来。这就很像我们这里的文件编码,在文件传输时,要对内容进行

   特定编码方式的编码,转化为字节进行传输,然后再通过相同的编码方式进行解码转化为原先的文件。

   我们同样以代码的方式解释一下:

   字符串==>字节数组

java安全编码 java安全编码关于文件上传_字节数组

   上面将字符串转化为字节数组是采用了默认的编码方式GBK,这个编码方式可以在项目属性里面更改,具体步骤自

   行百度,然而我们是可以在不改变项目编码方式的前提下,自定义转换的编码方式:

java安全编码 java安全编码关于文件上传_java_02

   我们不难看出,对于相同的字符串“桔子桑”,GBK编码下一个中文占两个字节,而UTF-8编码下,

   一个中文占三个字节,作为补充,我们也要知道,英文在两种编码下都只占一个字节。

   注意:java是双字节编码(utf-16be)即中文占两个字节,英文也占两个字节。

   字节数组==>字符串

   上面我们提到过,是以什么方式转码的就以什么方式解码

java安全编码 java安全编码关于文件上传_字符串_03

   由于java项目是规定了编码方式的,假如a项目是GBK编码,b项目是UTF-8编码,那么

   a项目下创建一个txt文件复制到b项目是会出现乱码的,因为两个项目的编码方式不同。

2.File类常用API介绍

java安全编码 java安全编码关于文件上传_java_04

   上面是一个读取指定目录下所有文件(夹)的方法showfiles(File file)。通过传入一个File对象new File("E:\\demo"),

   实现输出该目录下所有文件(夹)的路径。