在我的应用程序中,用户在驱动器上选择一个大文件(> 100 MB)。我希望该程序可以获取所选择的文件,并 将其切成存档的零件 100 MB或更少。如何才能做到这一点?什么 和文件 格式 我应该使用吗?你能给我一些示例代码吗?创建了第一个100MB存档的零件之后,我将其上传到服务器,然后我将上传下载100MB零件,依此类推,直到上传完成为止。之后,我将从另一台计算机下载所有这些存档的零件,然后我希望 将它们连接到原始文件. 。例如,7ZIP库是否可以?谢谢!

更新: 从第一个答案开始,我认为我将使用Sevenzipsharp,我相信我现在了解如何将文件分成100MB存档的零件,但是我仍然有两个问题:

  1. 是否可以在创建下一个100MB零件之前创建第一个100MB存档的零件并将其上传?
  2. 如何从多个拆分档案中提取使用Sevenzipsharp的文件?

更新#2: 我只是在玩7个ZIP GUI并创建了多卷/拆分档案,我发现选择第一个并从中提取的档案将从所有拆分档案中提取整个文件。这使我相信,通往后续部分的途径已包含在第一个(还是连续?)中。但是,我不确定这是否会直接从控制台上使用,但是我现在会尝试,看看它是否从第一个更新中解决了问题2。

有帮助吗?

解决方案

看一眼 Sevenzipsharp, ,您可以使用它来创建Spit 7Z文件,尽一切努力上传它们,然后在服务器端提取它们。

将档案分开 SevenZipCompressor.CustomParameters 成员,传递“ V100m”。 (您可以在7zip的7-zip.chm文件中找到更多参数)

其他提示

您可以首先将数据拆分为100MB“数据包”,然后依次将每个数据包传递到压缩机中,假装它们只是单独的文件。

但是,这种压缩通常基于流。只要您使用的库将通过流派生的类进行I/O,就可以简单地实现自己的流,以“ packetise”“ packetise”您喜欢的数据,因为数据传递到数据中您的Write()方法将其写入文件。当您超过该文件中的100MB时,您只需关闭该文件并打开一个新文件,然后继续写入。

这些方法中的任何一种都可以使您可以轻松地上传一个“数据包”,同时继续压缩下一种“数据包”。

编辑

只是要清楚 - 减压只是上述的反向序列,因此,一旦您获得压缩代码工作,减压将很容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top