【问题标题】:Handle 7z Compressed File In VB.NET在 VB.NET 中处理 7z 压缩文件
【发布时间】:2017-02-09 18:44:02
【问题描述】:

我需要有关 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 文件丢失,它不会要求用户浏览并选择该文件。它只会中止进程并显示错误消息。

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

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 压缩可能覆盖多个磁盘的文件,然后安装程序正确安装它们:)

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

提前谢谢..

最好的问候

【问题讨论】:

  • 不知道这是否有帮助,但你看到了这个:sevenzipsharp.codeplex.com
  • 切换到 U 盘?
  • @rheitzman,感谢您的回复,但这不是我想要的 .. :(。我正在寻找一个编程解决方案。因为不同的集合有不同的数据量。
  • @JohnBus​​tos,亲爱的先生,不,sevenzipsharp 与 7zip 有相同的问题。如果缺少任何部分,它也会显示错误:(。但是感谢您的回复
  • 有什么想法/可能性吗?

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


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2019-09-17
    • 2018-04-27
    相关资源
    最近更新 更多