在VB.NET中处理7z压缩文件

时间:2014-11-18 18:28:36

标签: .net vb.net compression 7zip lzma

我需要有关7z压缩文件的特定帮助。我希望所有人都知道什么是7z文件。它是由7zip创建的压缩文件格式。

我需要为最终用户提供10 GB以上的数据(使用7zip压缩后)。

因此,我使用7zip压缩数据并将文件拆分为1024MB(1GB)。 因此,例如对于10GB数据,它将是10个文件,如:

Data.7z.001
Data.7z.002
Data.7z.003
Data.7z.004
Data.7z.005
Data.7z.006
Data.7z.007
Data.7z.008
Data.7z.009
Data.7z.010

所以,我将这些数据放在3张DVD光盘上。

我还为这些数据制作了一个提取器/安装程序(稍后我称之为我的应用程序)。

我的应用程序在后台使用7zip CLI(命令行界面)来提取数据。我把我的安装程序也放在了DVD中。

当前情景:

现在,用户必须首先将所有磁盘(对于此示例3磁盘)复制到单个文件夹中。然后运行我的安装程序以解压缩文件。

他们必须将所有磁盘放入单个/同一个文件夹,因为7z GuI / CLI不支持查找未找到的文件。据我所知,例如,如果缺少Data.006.7z文件,它将不会要求用户浏览并选择该文件。它将使用错误消息中止该过程。

当前场景的问题: 如上所述,用户必须首先将所有磁盘复制到其硬盘中。这有三个主要问题:

1. They must have that much space to copy all the disk in to same folder/drive
2. It will take so long to copy the disk then extract the data.
3. It need double space than it should :(

我在寻找什么: 我见过7zip有LZMA SDK。但是没有vb.net客户端库:(。我希望在我的vb.net项目中使用那个LZMA SDK。所以,我可以处理这些7z文件并克服7zip gui /问题。

所以,我的应用程序将首先提取在磁盘1中找到的7z文件,例如001到004,然后它要求第二个磁盘,当用户放置第二个磁盘时,它将从该数字继续,例如005,完成后将询问对于需要的磁盘3等等。

希望有道理吗?

我知道这是可能的,因为我看到一些安装程序使用LZMA压缩可能覆盖多个磁盘的文件,然后安装程序正确安装它们:)

那么,任何人都可以帮我实现这个目标吗?请?

提前谢谢..

最好的问候

1 个答案:

答案 0 :(得分:0)

要用7z解压缩文件,只需要第一个文件

Dim exePath As String = "C:\Program Files\7-Zip\7z.exe"
Dim args As String = "e C:\DATA\TestData\K0080130001.7z.001" + " -o" "C:\DATA\TestData\New Folder\"""
System.Diagnostics.Process.Start(exePath, args)