ZipFile

ZipFile类型用于压缩和解压文件,采用的压缩格式为ZIP。

方法

名称 说明
Create 创建压缩文件。

示例

Dim zip As New zipFile
zip.Create(
"c:\data\foxtable.zip")

Open 打开压缩文件。

示例

Dim zip As New zipFile
zip.Open(
"c:\data\foxtable.zip")

Close 关闭压缩文件,ZipFile使用结束后,应该执行此方法。
AddFile 添加文件。

语法:

AddFile(FileName)
AddFile(FileName, NewFileName)

FileName:       要压缩的文件名,含路径。
NewFileName:   可选参数,设置压缩后的文件名,可以包括路径。

示例一:

Dim zip As New zipFile
zip
.Create("c:\data\foxtable.zip")
zip
.AddFile("c:\publish\foxtable.exe")

zip.Close()

示例二:

备份项目文件,并按照“月.日”的格式重命名压缩后的文件名,这样我们可以同一个压缩文件中保留项目的多个备份:

Dim zip As New zipFile
Dim
zFile As String = "c:\data\backup.zip"
Dim
NewName As String
NewName
= Date.Today.Month & "." & Date.Today.Day & ".Table"
If
FileSys.FileExists(zfile) Then '如果压缩文件已经存在
   
zip.Open(zFile) '则打开
Else
   
zip.Create(zFile) '否则创建
End If

zip
.AddFile(ProjectFile, NewName)
zip
.Close
()

示例三:

可以给要压缩的文件指定路径,例如备份项目文件以及项目文件子目录Images下的所有文件:

Dim zip As New zipFile
zip
.Create("c:\data\backup.zip")
zip
.AddFile(ProjectFile)
For Each
File As String In FileSys.GetFiles(ProjectPath & "Images")
    zip
.AddFile(File, "Images\" & FileSys.GetName(File
))
Next

zip
.Close()

上面的代码,压缩时如果不给Images子目录下的文件指定路径“Images”,那么这些文件将和项目文件一样,处于压缩文件的根目录,导致解压的时候无法准确还原路径。
 

AddFolder 添加目录,此目录下的所有文件将被压缩。

语法:

AddFolder(Path)
AddFolder(Path, Pattern)
AddFolder(Path, Pattern, IncludeSubFolders)

Path:              要压缩的目录
Pattern:            可选参数,要匹配的模式
IncludeSubFolders: 可选参数,逻辑型,是否包括子目录,默认为True,也就是包括。

示例一:

压缩c:\publish目录下的所有文件:

Dim zip As New zipFile
zip
.Create("c:\data\backup.zip")
zip.AddFolder(
"c:\publish")
zip.Close()

示例二:

压缩c:\publish目录下的gif文件:

Dim zip As New zipFile
zip
.Create("c:\data\backup.zip")
zip.AddFolder(
"c:\publish", "*.gif"
)
zip.Close()

示例三:

压缩c:\publish目录下的所有文件,但不包括子目录下的文件:

Dim zip As New zipFile
zip
.Create("c:\data\backup.zip")
zip.AddFolder(
"c:\publish", "*.*", False)
zip
.Close()

 

Extract 解压指定的文件。

语法:

Extract(FileName)
Extract(FileName, NewFileName)

FileName:     要解压的文件
NewFileName: 可选参数,指定新的文件名,必须包括路径

如果不指定NewFileName参数,则解压到压缩文件所在目录。

示例:

Dim zip As New zipFile
zip.Open(
"c:\data\backup.zip")
zip.Extract(
"Foxtable.exe")
zip.Extract(
"Images/Chart.ico")
zip.Extract(
"Images/Bold.ico", "c:\data\Images\Bold.ico"
)
zip.Close()

上面代码,将foxtable.exe和chart.ico两个文件解压到压缩文件所在的目录c:\data,尽管在压缩文件中,Chart.Ico位于子目录Images之下,而Bold.ico将解压到c:\data\Images目录下。

提示:

1、压缩文件内部的目录分割符号为"/",而不是"\"。
2、如果要解压到指定的目录,必须先创建此目录,例如上例中的c:\data\Images。

ExtractAll 解压所有文件到指定的目录。

示例:

将所有文件解压到目录c:\test:

Dim
zip As New zipFile
zip.Open(
"c:\data\backup.zip")
zip.ExtractAll(
"c:\test"
)
zip.Close()

Contains 判断压缩文件中是否存在指定的文件。

示例:

Dim zip As New zipFile
Dim
zFile As String = "c:\data\backup.zip"
Dim
NewName As String
NewName
= Date.Today.Month & "." & Date.Today.Day & ".Table"
If
FileSys.FileExists(zfile) Then
    zip
.Open(zFile
)
Else

    zip
.Create(zFile
)
End If
If
zip.Contains(NewName) = False Then
    zip.AddFile(ProjectFile, NewName)

End
If
zip.Close()

 

Remove 从压缩文件中删除指定的文件。

示例:

Dim zip As New zipFile
zip.Open(
"c:\data\backup.zip")
zip.Remove(
"foxtable.exe")
zip
.Close()

属性

名称 说明
Count 整数型,返回压缩文件中文件的个数。
UseUtf8Encoding 逻辑型,压缩包中的文件名和注释是否采用UTF8格式编码。
Files 返回一个字符集合,包括压缩文件中所有文件名。

示例

Dim zip As New zipFile
zip.Open(
"c:\data\backup.zip")
For Each
File As String In zip.Files
   Output
.Show(File)
Next

zip
.Close
()

Password 字符型,返回或设置压缩文件的目录。

示例一

压缩的时候设置密码:

Dim zip As New zipFile
zip.Create(
"c:\data\backup.zip")
zip.Password =
"mypassword"
zip.AddFolder(
"c:\publish"
)
zip.Close()

解压的时候设置密码:

Dim zip As New zipFile
zip.Open(
"c:\data\backup.zip")
zip.Password =
"mypassword"
zip.ExtractAll(
"c:\data\backup"
)
zip.Close()

实例二

不同的文件可以设置不同的密码:

Dim zip As New zipFile
zip.Create(
"c:\data\backup.zip")
zip.Password =
"mypassword"
zip.AddFile(
"c:\publish\foxtable.exe")
zip.Password =
"yourpassword"
zip.AddFile(
"c:\publish\config.dat"
)
zip.Close()

解压的时候必须为各文件设置对应的密码:

Dim zip As New zipFile
zip.Open(
"c:\data\backup.zip")
zip.Password =
"mypassword"
zip.Extract(
"foxtable.exe")
zip.Password =
"yourpassword"
zip.Extract(
"config.dat"
)
zip.Close()


本页地址:http://www.foxtable.com/webhelp/topics/2075.htm