我有一些'偏移'Zip文件的文件,因为它们在开头有4个额外的字节,在提取时必须忽略它们。
我一直在使用ReadAllBytes / WriteAllBytes(偏移量为4) - 这很有效,但显然我必须写入读/写/读取文件很慢。
我更喜欢使用System.IO.Compression.ZipArchive来读取从文件加载的流(没有前4个字节) - 但我无法弄清楚这样做所需的步骤?
我试过'寻求',但ZipArchive忽略了位置 我似乎无法让Byte Arrays完全进入System.IO.Compression ......
想法?
答案 0 :(得分:1)
最后!
在尝试各种箍跳后,似乎最简单的答案是正确的
$bytes = [system.io.file]::ReadAllBytes("file.zip4")
$ms = New-Object System.IO.MemoryStream -Argumentlist $bytes,4,($bytes.length-4)
$arch = New-Object System.IO.Compression.ZipArchive($ms)
然后我可以处理$ arch.Entries并提取好的东西 - 读取文件一次并处理它而不是读取它,将“大部分”写回光盘,再次读取该文件!!