#### 压缩和解压函数

##### 内容

- 压缩和解压函数简介
- ZipCompress
- ZipExtract
- RarExtract
- 压缩解压函数使用说明
- unicompress
- uniuncompress

##### 压缩和解压函数简介

ZIP和RAR是最常见的文件压缩格式，为此天软提供了ZIP文件压缩和解压函数，以及RAR的解压支持。因RAR格式版权所有人不允许除自己外的第二者提供压缩支持，目前天软没有提供RAR的压缩函数。

##### ZipCompress

范例

```tsl
// 把文件d:\a.txt压缩到d:\a.zip文件中的/hello/world/a.txt中
ZipCompress('', 'd:\\a.zip', '', 'd:\\a.txt', 'hello/world/a.txt');
// 将d:\tmp目录压缩到d:\a.zip文件中
ZipCompress('', 'd:\\a.zip', '', 'd:\\tmp', 'test');
```

##### ZipExtract

范例

```tsl
// 将ZIP文件解压，可以使用ZipExtract函数，例如将d:\a.zip文件解压到d:\tmp目录
ZipExtract('', 'd:\\a.zip', '', 'd:\\tmp', '123');
```

##### RarExtract

范例

```tsl
// 将RAR文件解压，可以使用RarExtract函数，例如将d:\a.rar文件解压到d:\tmp目录
RarExtract('', 'd:\\a.rar', '', 'd:\\tmp', '123');
```

##### 压缩解压函数使用说明

函数中的alias参数用于指定目录别名

ZipCompress函数可以将由filename指定的文件或目录压缩到由zip_filename指定的压缩文件中，如果压缩文件不存在，函数会创建一个。ZIP格式的压缩不支持加密。

函数中所指定的path是压缩文件或目录在ZIP文件中的路径。如同文件系统中文件是在树状的目录结构中存储一样，ZIP文件中所存储的文件也是树状结构的，通过指定path参数，我们可以将文件或目录压缩后存放到ZIP文件中指定的目录下，如果path参数为空(“”)，就压缩到ZIP的根目录下。例如我们把文件d:\a.txt压缩到d:\a.zip文件中的/hello/world/a.txt中，可以使用下面的语句：

```tsl
ZipCompress('', 'd:\\a.zip', '', 'd:\\a.txt', 'hello/world/a.txt');
```

又如我们要将d:\tmp目录压缩到d:\a.zip文件中的根下，可以使用这样的语句：

```tsl
ZipCompress('', 'd:\\a.zip', '', 'd:\\tmp', 'test');
```

要将ZIP文件解压，可以使用ZipExtract函数，例如将d:\a.zip文件解压到d:\tmp目录：

```tsl
ZipExtract('', 'd:\\a.zip', '', 'd:\\tmp', '123') ;
```

要将RAR文件解压，可以使用RarExtract函数，例如将d:\a.rar文件解压到d:\tmp目录：

```tsl
RarExtract('', 'd:\\a.rar', '', 'd:\\tmp', '123');
```

##### unicompress

范例

本地运行下面脚本：

```tsl
data := "Holle Tinysoft天软";
s := unicompress("zstd", data);
echo s, "\r\n";
echo uniuncompress("zstd", s), "\r\n";
return 1;
```

##### uniuncompress

范例

```tsl
data := "Holle Tinysoft天软";
len := length(data);
s := unicompress("zstd", data);
echo s, "\r\n";
echo uniuncompress("zstd", s, len), "\r\n";
return 1;
```
