问题标签 [sharpcompress]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# SharpCompress - 无法使用 ArchiveFactory.Open 打开嵌套存档
我正在使用 SharpCompress 提取大量包含嵌套档案的档案。我需要能够获取基础存档中每个文件的 CRC,以及基础存档内嵌套存档中每个文件的 CRC。出于性能原因,我需要在 zip 位于内存(例如流)中时执行此操作。(即不要先将它们提取到磁盘,然后再处理它们。)
“RootZip.zip”的示例 Zip 结构
除了嵌套档案之外,每个档案还包含文件。
我需要能够:
- 获取“RootZip.zip”、“SubZipLvl1.zip”和“SubZipLvl2.7z”中每个文件的 CRC。
- 从每个 zip 中提取特定文件(“RootZip.zip”、“SubZipLvl1.zip”和“SubZipLvl2.7z”)
我试过的:
我发现通过 ArchiveFactory 处理每个 zip 并使用 IArchive 接口,我可以使用“archive.Entries[i].crc”获取根 zip 中文件的所有 CRC,但它不允许我使用此方法打开嵌套档案的条目的条目流,以便我也可以获得其中文件的 CRC(参见下面的代码):
上面的代码抛出了一个异常“$exception {“Stream should be readable and seekable”}”,你会认为这是有道理的,因为我试图在一个已经打开的阅读器中打开一个阅读器......但是......
如果我使用这种使用流的嵌套读取器的方法,我能够提取嵌套档案的内容(删除了错误处理以减小其大小):
我可以提取嵌套档案,但我找不到从阅读器类的每个文件中获取 CRC 的方法。
如何从嵌套 zip 中的文件中获取 CRC,而无需先将它们提取到磁盘?
c# - 提取具有数百万个 200 位文件大小的 7z 文件需要数小时才能完成。如何加快速度?
美好的一天,我已经为我的网站项目创建了自己的自定义向导安装程序。我的目标是在安装我们的客户端期间尽量减少工作量。
我正在尝试提取一个 7z 文件,其中包含数百万个小文件(每个文件的大小为 200 位)。我正在使用sharpcompress 来实现这个提取过程,但似乎需要几个小时才能完成任务,这对用户来说非常糟糕。
我不在乎压缩。我需要的是减少这些数百万个小文件的提取过程的时间,或者如果可能的话,加快提取速度。
我的问题是。提取数百万个小文件的最快方法是什么?或以最快的解包速度打包和解包文件的任何方法。
我正在尝试通过以下代码提取 7z 文件:
但是对于小文件来说,提取时间似乎很慢。