在Powershell中将文件的一部分读入流中

时间:2018-03-19 02:50:55

标签: powershell

我有一些'偏移'Zip文件的文件,因为它们在开头有4个额外的字节,在提取时必须忽略它们。

我一直在使用ReadAllBytes / WriteAllBytes(偏移量为4) - 这很有效,但显然我必须写入读/写/读取文件很慢。

我更喜欢使用System.IO.Compression.ZipArchive来读取从文件加载的流(没有前4个字节) - 但我无法弄清楚这样做所需的步骤?

我试过'寻求',但ZipArchive忽略了位置 我似乎无法让Byte Arrays完全进入System.IO.Compression ......

想法?

1 个答案:

答案 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并提取好的东西 - 读取文件一次并处理它而不是读取它,将“大部分”写回光盘,再次读取该文件!!